From: Andreas Schneider Date: Mon, 28 Oct 2024 12:37:17 +0000 (+0100) Subject: s3:utils: Fix memory leaks in test_lmv2_ntlmv2_broken() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9056d6da14b896d455fd1db85c5f1bffec5583b5;p=thirdparty%2Fsamba.git s3:utils: Fix memory leaks in test_lmv2_ntlmv2_broken() Direct leak of 104 byte(s) in 1 object(s) allocated from: #0 0x7f48254fc777 in malloc ../../../../libsanitizer/asan/asan_malloc_linux.cpp:69 #1 0x7f48250d9c57 in __talloc_with_prefix ../../lib/talloc/talloc.c:783 #2 0x7f48250dbacf in __talloc ../../lib/talloc/talloc.c:825 #3 0x7f48250dbacf in _talloc_named_const ../../lib/talloc/talloc.c:982 #4 0x7f48250dbacf in _talloc_array ../../lib/talloc/talloc.c:2784 #5 0x7f4824e59a99 in data_blob_talloc_named ../../lib/util/data_blob.c:58 #6 0x7f4824e59b1b in data_blob_named ../../lib/util/data_blob.c:40 #7 0x56084d20789c in get_challenge ../../source3/utils/ntlm_auth.c:375 #8 0x56084d20f0b9 in test_lmv2_ntlmv2_broken ../../source3/utils/ntlm_auth_diagnostics.c:381 #9 0x56084d20f92e in test_ntlmv2 ../../source3/utils/ntlm_auth_diagnostics.c:474 #10 0x56084d20f9ae in diagnose_ntlm_auth ../../source3/utils/ntlm_auth_diagnostics.c:718 #11 0x56084d20befd in main ../../source3/utils/ntlm_auth.c:2855 #12 0x7f4821c2a2ad in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 Signed-off-by: Andreas Schneider Reviewed-by: Noel Power --- diff --git a/source3/utils/ntlm_auth_diagnostics.c b/source3/utils/ntlm_auth_diagnostics.c index 126eddeaa32..3228476ee4d 100644 --- a/source3/utils/ntlm_auth_diagnostics.c +++ b/source3/utils/ntlm_auth_diagnostics.c @@ -389,10 +389,9 @@ static bool test_lmv2_ntlmv2_broken(enum ntlm_break break_which) &names_blob, &lmv2_response, &ntlmv2_response, NULL, &ntlmv2_session_key)) { - data_blob_free(&names_blob); - return False; + pass = false; + goto done; } - data_blob_free(&names_blob); switch (break_which) { case BREAK_NONE: @@ -422,15 +421,12 @@ static bool test_lmv2_ntlmv2_broken(enum ntlm_break break_which) &authoritative, &error_string, NULL); - data_blob_free(&lmv2_response); - data_blob_free(&ntlmv2_response); - if (!NT_STATUS_IS_OK(nt_status)) { d_printf("%s (0x%x)\n", error_string, NT_STATUS_V(nt_status)); - SAFE_FREE(error_string); - return break_which == BREAK_NT; + pass = (break_which == BREAK_NT); + goto done; } SAFE_FREE(error_string); @@ -445,7 +441,13 @@ static bool test_lmv2_ntlmv2_broken(enum ntlm_break break_which) pass = False; } +done: + data_blob_free(&names_blob); + data_blob_free(&lmv2_response); + data_blob_free(&ntlmv2_response); data_blob_free(&ntlmv2_session_key); + SAFE_FREE(error_string); + return pass; }