s3:libads: Fix memory leak in kerberos_return_pac() error path
authorSamuel Cabrero <scabrero@suse.de>
Tue, 22 Feb 2022 11:59:44 +0000 (12:59 +0100)
committerJule Anger <janger@samba.org>
Sun, 27 Feb 2022 09:43:09 +0000 (09:43 +0000)
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
(cherry picked from commit 3dbcd20de98cd28683a9c248368e5082b6388111)

source3/libads/authdata.c

index dd21d895fc2f1f0439b6923a5397c065193a0f95..c048510d480fc4fb4bf03e3ddc90c7a85c6ab700 100644 (file)
@@ -61,7 +61,10 @@ NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx,
 {
        krb5_error_code ret;
        NTSTATUS status = NT_STATUS_INVALID_PARAMETER;
-       DATA_BLOB tkt, tkt_wrapped, ap_rep, sesskey1;
+       DATA_BLOB tkt = data_blob_null;
+       DATA_BLOB tkt_wrapped = data_blob_null;
+       DATA_BLOB ap_rep = data_blob_null;
+       DATA_BLOB sesskey1 = data_blob_null;
        const char *auth_princ = NULL;
        const char *cc = "MEMORY:kerberos_return_pac";
        struct auth_session_info *session_info;
@@ -81,7 +84,8 @@ NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx,
        ZERO_STRUCT(sesskey1);
 
        if (!name || !pass) {
-               return NT_STATUS_INVALID_PARAMETER;
+               status = NT_STATUS_INVALID_PARAMETER;
+               goto out;
        }
 
        if (cache_name) {
@@ -131,7 +135,8 @@ NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx,
 
        if (expire_time && renew_till_time &&
            (*expire_time == 0) && (*renew_till_time == 0)) {
-               return NT_STATUS_INVALID_LOGON_TYPE;
+               status = NT_STATUS_INVALID_LOGON_TYPE;
+               goto out;
        }
 
        ret = ads_krb5_cli_get_ticket(mem_ctx,