s3-libads: Fix a possible segfault in kerberos_fetch_pac().
authorAndreas Schneider <asn@samba.org>
Wed, 7 Jan 2015 16:12:54 +0000 (17:12 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 7 Jan 2015 20:55:06 +0000 (21:55 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11037

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/libads/authdata.c

index 18a2e4fccc2106d499906da97fc2fad5b8607972..d3a0992c80426585303e932daa62b1896be23e05 100644 (file)
@@ -61,7 +61,7 @@ static NTSTATUS kerberos_fetch_pac(struct auth4_context *auth_ctx,
                return NT_STATUS_NO_MEMORY;
        }
 
-       if (pac_blob) {
+       if (pac_blob != NULL) {
                status = kerberos_decode_pac(tmp_ctx,
                                             *pac_blob,
                                             NULL,
@@ -73,22 +73,22 @@ static NTSTATUS kerberos_fetch_pac(struct auth4_context *auth_ctx,
                if (!NT_STATUS_IS_OK(status)) {
                        goto done;
                }
-       }
 
-       pac_data_ctr = talloc(mem_ctx, struct PAC_DATA_CTR);
-       if (pac_data_ctr == NULL) {
-               status = NT_STATUS_NO_MEMORY;
-               goto done;
-       }
+               pac_data_ctr = talloc(mem_ctx, struct PAC_DATA_CTR);
+               if (pac_data_ctr == NULL) {
+                       status = NT_STATUS_NO_MEMORY;
+                       goto done;
+               }
 
-       talloc_set_name_const(pac_data_ctr, "struct PAC_DATA_CTR");
+               talloc_set_name_const(pac_data_ctr, "struct PAC_DATA_CTR");
 
-       pac_data_ctr->pac_data = talloc_steal(pac_data_ctr, pac_data);
-       pac_data_ctr->pac_blob = data_blob_talloc(pac_data_ctr,
-                                                 pac_blob->data,
-                                                 pac_blob->length);
+               pac_data_ctr->pac_data = talloc_steal(pac_data_ctr, pac_data);
+               pac_data_ctr->pac_blob = data_blob_talloc(pac_data_ctr,
+                                                         pac_blob->data,
+                                                         pac_blob->length);
 
-       auth_ctx->private_data = talloc_steal(auth_ctx, pac_data_ctr);
+               auth_ctx->private_data = talloc_steal(auth_ctx, pac_data_ctr);
+       }
 
        *session_info = talloc_zero(mem_ctx, struct auth_session_info);
        if (!*session_info) {