167d4b
From de7f0d81a33803f4f24b587dc00f9dc16689b059 Mon Sep 17 00:00:00 2001
167d4b
From: Andreas Schneider <asn@samba.org>
167d4b
Date: Wed, 7 Jan 2015 17:12:54 +0100
167d4b
Subject: [PATCH] s3-libads: Fix a possible segfault in kerberos_fetch_pac().
167d4b
167d4b
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11037
167d4b
167d4b
Signed-off-by: Andreas Schneider <asn@samba.org>
167d4b
Reviewed-by: Jeremy Allison <jra@samba.org>
167d4b
(cherry picked from commit a13e29cc4345d85ab6fe4482119386b87e4e8673)
167d4b
---
167d4b
 source3/libads/authdata.c | 26 +++++++++++++-------------
167d4b
 1 file changed, 13 insertions(+), 13 deletions(-)
167d4b
167d4b
diff --git a/source3/libads/authdata.c b/source3/libads/authdata.c
167d4b
index 18a2e4f..d3a0992 100644
167d4b
--- a/source3/libads/authdata.c
167d4b
+++ b/source3/libads/authdata.c
167d4b
@@ -61,7 +61,7 @@ static NTSTATUS kerberos_fetch_pac(struct auth4_context *auth_ctx,
167d4b
 		return NT_STATUS_NO_MEMORY;
167d4b
 	}
167d4b
 
167d4b
-	if (pac_blob) {
167d4b
+	if (pac_blob != NULL) {
167d4b
 		status = kerberos_decode_pac(tmp_ctx,
167d4b
 					     *pac_blob,
167d4b
 					     NULL,
167d4b
@@ -73,22 +73,22 @@ static NTSTATUS kerberos_fetch_pac(struct auth4_context *auth_ctx,
167d4b
 		if (!NT_STATUS_IS_OK(status)) {
167d4b
 			goto done;
167d4b
 		}
167d4b
-	}
167d4b
 
167d4b
-	pac_data_ctr = talloc(mem_ctx, struct PAC_DATA_CTR);
167d4b
-	if (pac_data_ctr == NULL) {
167d4b
-		status = NT_STATUS_NO_MEMORY;
167d4b
-		goto done;
167d4b
-	}
167d4b
+		pac_data_ctr = talloc(mem_ctx, struct PAC_DATA_CTR);
167d4b
+		if (pac_data_ctr == NULL) {
167d4b
+			status = NT_STATUS_NO_MEMORY;
167d4b
+			goto done;
167d4b
+		}
167d4b
 
167d4b
-	talloc_set_name_const(pac_data_ctr, "struct PAC_DATA_CTR");
167d4b
+		talloc_set_name_const(pac_data_ctr, "struct PAC_DATA_CTR");
167d4b
 
167d4b
-	pac_data_ctr->pac_data = talloc_steal(pac_data_ctr, pac_data);
167d4b
-	pac_data_ctr->pac_blob = data_blob_talloc(pac_data_ctr,
167d4b
-						  pac_blob->data,
167d4b
-						  pac_blob->length);
167d4b
+		pac_data_ctr->pac_data = talloc_steal(pac_data_ctr, pac_data);
167d4b
+		pac_data_ctr->pac_blob = data_blob_talloc(pac_data_ctr,
167d4b
+							  pac_blob->data,
167d4b
+							  pac_blob->length);
167d4b
 
167d4b
-	auth_ctx->private_data = talloc_steal(auth_ctx, pac_data_ctr);
167d4b
+		auth_ctx->private_data = talloc_steal(auth_ctx, pac_data_ctr);
167d4b
+	}
167d4b
 
167d4b
 	*session_info = talloc_zero(mem_ctx, struct auth_session_info);
167d4b
 	if (!*session_info) {
167d4b
-- 
167d4b
2.2.1
167d4b