From 39e174041717cfe8bb3f88cd6f3e14e1b3387bc2 Mon Sep 17 00:00:00 2001 From: Ashish Sharma Date: Tue, 9 Jun 2026 11:38:45 +0800 Subject: [PATCH] fix(protocomm): null output buffer pointer on crypto failure --- components/protocomm/src/security/security1.c | 1 + components/protocomm/src/security/security2.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/components/protocomm/src/security/security1.c b/components/protocomm/src/security/security1.c index f4df68ec56e..2a971752a4e 100644 --- a/components/protocomm/src/security/security1.c +++ b/components/protocomm/src/security/security1.c @@ -555,6 +555,7 @@ static esp_err_t sec1_crypt(protocomm_security_handle_t handle, if (status != PSA_SUCCESS) { ESP_LOGE(TAG, "psa_cipher_update failed with status=%d", status); free(*outbuf); + *outbuf = NULL; return ESP_FAIL; } return ESP_OK; diff --git a/components/protocomm/src/security/security2.c b/components/protocomm/src/security/security2.c index e6d132f24ac..4eb22e81df0 100644 --- a/components/protocomm/src/security/security2.c +++ b/components/protocomm/src/security/security2.c @@ -505,12 +505,14 @@ static esp_err_t sec2_encrypt(protocomm_security_handle_t handle, if (status != PSA_SUCCESS) { ESP_LOGE(TAG, "psa_aead_encrypt failed with status=%d", status); free(*outbuf); + *outbuf = NULL; return ESP_FAIL; } if (out_len != *outlen) { ESP_LOGE(TAG, "psa_aead_encrypt output length mismatch: expected %zd, got %zu", *outlen, out_len); free(*outbuf); + *outbuf = NULL; return ESP_FAIL; } @@ -566,12 +568,14 @@ static esp_err_t sec2_decrypt(protocomm_security_handle_t handle, if (status != PSA_SUCCESS) { ESP_LOGE(TAG, "psa_aead_decrypt failed with status=%d", status); free(*outbuf); + *outbuf = NULL; return ESP_FAIL; } if (out_len != *outlen) { ESP_LOGE(TAG, "psa_aead_decrypt output length mismatch: expected %zd, got %zu", *outlen, out_len); free(*outbuf); + *outbuf = NULL; return ESP_FAIL; }