From 9c2ffef0d51029132313593e413f2e2f4f671e6b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pavel=20Filipensk=C3=BD?= Date: Sat, 20 Aug 2022 15:37:26 +0200 Subject: [PATCH] s3:passdb: Zero sensitive memory in lsa_secret_{set/get}_common() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Pavel Filipenský Reviewed-by: Andreas Schneider --- source3/passdb/secrets_lsa.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/source3/passdb/secrets_lsa.c b/source3/passdb/secrets_lsa.c index 3ebaac4bb8e..7ff6d518cae 100644 --- a/source3/passdb/secrets_lsa.c +++ b/source3/passdb/secrets_lsa.c @@ -62,7 +62,16 @@ static NTSTATUS lsa_secret_get_common(TALLOC_CTX *mem_ctx, return ndr_map_error2ntstatus(ndr_err); } - SAFE_FREE(blob.data); + /* This is NOT a talloc blob */ + BURN_FREE(blob.data, blob.length); + + if (secret->secret_current != NULL && + secret->secret_current->data != NULL) { + talloc_keep_secret(secret->secret_current->data); + } + if (secret->secret_old != NULL && secret->secret_old->data != NULL) { + talloc_keep_secret(secret->secret_old->data); + } return NT_STATUS_OK; } @@ -163,9 +172,11 @@ static NTSTATUS lsa_secret_set_common(TALLOC_CTX *mem_ctx, } if (!secrets_store(key, blob.data, blob.length)) { + data_blob_clear(&blob); return NT_STATUS_ACCESS_DENIED; } + data_blob_clear(&blob); return NT_STATUS_OK; } -- 2.47.3