diff options
| -rw-r--r-- | source4/torture/auth/pac.c | 254 | 
1 files changed, 129 insertions, 125 deletions
diff --git a/source4/torture/auth/pac.c b/source4/torture/auth/pac.c index 2acbaf0a33..313e0f0d3d 100644 --- a/source4/torture/auth/pac.c +++ b/source4/torture/auth/pac.c @@ -29,11 +29,11 @@  #include "samba3/samba3.h"  #include "libcli/security/security.h"  #include "torture/torture.h" +#include "torture/ui.h" -static BOOL torture_pac_self_check(void)  +static BOOL torture_pac_self_check(struct torture_context *torture)   {  	NTSTATUS nt_status; -	TALLOC_CTX *mem_ctx = talloc_named(NULL, 0, "PAC self check");  	DATA_BLOB tmp_blob;  	struct PAC_DATA *pac_data;  	struct PAC_LOGON_INFO *logon_info; @@ -52,15 +52,14 @@ static BOOL torture_pac_self_check(void)  	struct auth_serversupplied_info *server_info;  	struct auth_serversupplied_info *server_info_out; +	struct torture_test *test = torture_test(torture, "pac-selfcheck",  +												"PAC Selfcheck"); +  	krb5_principal client_principal;  	time_t logon_time = time(NULL); -	ret = smb_krb5_init_context(mem_ctx, &smb_krb5_context); - -	if (ret) { -		talloc_free(mem_ctx); -		return False; -	} +	torture_assert(test, 0 == smb_krb5_init_context(test, &smb_krb5_context),  +				 "smb_krb5_init_context");  	generate_random_buffer(server_bytes, 16);  	generate_random_buffer(krbtgt_bytes, 16); @@ -70,11 +69,11 @@ static BOOL torture_pac_self_check(void)  				 server_bytes, sizeof(server_bytes),  				 &server_keyblock);  	if (ret) { -		printf("(self test) Server Keyblock encoding failed: %s\n",  +		torture_fail(test, "(self test) Server Keyblock encoding failed: %s",   		       smb_get_krb5_error_message(smb_krb5_context->krb5_context,  -						  ret, mem_ctx)); +						  ret, test)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} @@ -83,41 +82,42 @@ static BOOL torture_pac_self_check(void)  				 krbtgt_bytes, sizeof(krbtgt_bytes),  				 &krbtgt_keyblock);  	if (ret) { -		printf("(self test) KRBTGT Keyblock encoding failed: %s\n",  +		torture_fail(test, "(self test) KRBTGT Keyblock encoding failed: %s",   		       smb_get_krb5_error_message(smb_krb5_context->krb5_context,  -						  ret, mem_ctx)); +						  ret, test));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* We need an input, and this one requires no underlying database */ -	nt_status = auth_anonymous_server_info(mem_ctx, &server_info); +	nt_status = auth_anonymous_server_info(test, &server_info);  	if (!NT_STATUS_IS_OK(nt_status)) {  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	ret = krb5_parse_name_norealm(smb_krb5_context->krb5_context,   				      server_info->account_name, &client_principal);  	if (ret) { +		torture_fail(test, "krb5_parse_name_norealm");  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* OK, go ahead and make a PAC */ -	ret = kerberos_create_pac(mem_ctx, server_info,  +	ret = kerberos_create_pac(test, server_info,   				  smb_krb5_context->krb5_context,    				  &krbtgt_keyblock,  				  &server_keyblock, @@ -126,9 +126,9 @@ static BOOL torture_pac_self_check(void)  				  &tmp_blob);  	if (ret) { -		printf("(self test) PAC encoding failed: %s\n",  +		torture_fail(test, "(self test) PAC encoding failed: %s",   		       smb_get_krb5_error_message(smb_krb5_context->krb5_context,  -						  ret, mem_ctx)); +						  ret, test));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock); @@ -136,14 +136,14 @@ static BOOL torture_pac_self_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context,   				    client_principal); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	dump_data(10,tmp_blob.data,tmp_blob.length);  	/* Now check that we can read it back */ -	nt_status = kerberos_decode_pac(mem_ctx, &pac_data, +	nt_status = kerberos_decode_pac(test, &pac_data,  					tmp_blob,  					smb_krb5_context->krb5_context,  					&krbtgt_keyblock, @@ -152,21 +152,22 @@ static BOOL torture_pac_self_check(void)  					logon_time, NULL);  	if (!NT_STATUS_IS_OK(nt_status)) { +		torture_fail(test, "(self test) PAC decoding failed: %s",  +			  nt_errstr(nt_status)); +  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context,   				    client_principal); -		DEBUG(1, ("(self test) PAC decoding failed: %s\n",  -			  nt_errstr(nt_status))); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* Now check that we can read it back */ -	nt_status = kerberos_pac_logon_info(mem_ctx, &logon_info, +	nt_status = kerberos_pac_logon_info(test, &logon_info,  					    tmp_blob,  					    smb_krb5_context->krb5_context,  					    &krbtgt_keyblock, @@ -176,16 +177,18 @@ static BOOL torture_pac_self_check(void)  					    NULL);  	if (!NT_STATUS_IS_OK(nt_status)) { +		torture_fail(test,  +			"(self test) PAC decoding (for logon info) failed: %s",  +		    nt_errstr(nt_status)); +  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context,   				    client_principal); -		printf("(self test) PAC decoding (for logon info) failed: %s\n",  -		       nt_errstr(nt_status)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} @@ -197,28 +200,31 @@ static BOOL torture_pac_self_check(void)  			    client_principal);  	validation.sam3 = &logon_info->info3; -	nt_status = make_server_info_netlogon_validation(mem_ctx, +	nt_status = make_server_info_netlogon_validation(test,  							 "",  							 3, &validation,  							 &server_info_out);   	if (!NT_STATUS_IS_OK(nt_status)) { -		printf("(self test) PAC decoding (make server info) failed: %s\n",  -		       nt_errstr(nt_status)); +		torture_fail(test,  +			"(self test) PAC decoding (make server info) failed: %s",  +		    nt_errstr(nt_status)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	if (!dom_sid_equal(server_info->account_sid,   			   server_info_out->account_sid)) { -		printf("(self test) PAC Decode resulted in *different* domain SID: %s != %s\n", -		       dom_sid_string(mem_ctx, server_info->account_sid),  -		       dom_sid_string(mem_ctx, server_info_out->account_sid)); -		talloc_free(mem_ctx); +		torture_fail(test,  +			"(self test) PAC Decode resulted in *different* domain SID: %s != %s", +		       dom_sid_string(test, server_info->account_sid),  +		       dom_sid_string(test, server_info_out->account_sid)); +		talloc_free(test);  		return False;  	} -	talloc_free(mem_ctx); +	torture_ok(test); +	talloc_free(test);  	return True;  } @@ -270,10 +276,11 @@ static const uint8_t saved_pac[] = {  };  /* Check with a known 'well formed' PAC, from my test server */ -static BOOL torture_pac_saved_check(void)  +static BOOL torture_pac_saved_check(struct torture_context *torture)   {  	NTSTATUS nt_status; -	TALLOC_CTX *mem_ctx = talloc_named(NULL, 0, "PAC saved check"); +	struct torture_test *test = torture_test(torture, "pac-saved-check",  +											 "PAC saved check");  	DATA_BLOB tmp_blob, validate_blob;  	struct PAC_DATA *pac_data, pac_data2;  	struct PAC_LOGON_INFO *logon_info; @@ -293,12 +300,8 @@ static BOOL torture_pac_saved_check(void)  	const char *authtime_string;  	time_t authtime; -	ret = smb_krb5_init_context(mem_ctx, &smb_krb5_context); - -	if (ret) { -		talloc_free(mem_ctx); -		return False; -	} +	torture_assert(test, 0 == smb_krb5_init_context(test, &smb_krb5_context), +				   "smb_krb5_init_context");  	pac_kdc_key = lp_parm_string(-1,"torture","pac_kdc_key");  	if (pac_kdc_key == NULL) { @@ -310,23 +313,23 @@ static BOOL torture_pac_saved_check(void)  		pac_member_key = "D217FAEAE5E6B5F95CCC94077AB8A5FC";  	} -	printf("Using pac_kdc_key '%s'\n", pac_kdc_key); -	printf("Using pac_member_key '%s'\n", pac_member_key); +	torture_comment(test, "Using pac_kdc_key '%s'", pac_kdc_key); +	torture_comment(test, "Using pac_member_key '%s'", pac_member_key);  	/* The krbtgt key in use when the above PAC was generated.  	 * This is an arcfour-hmac-md5 key, extracted with our 'net  	 * samdump' tool. */ -	krbtgt_bytes = smbpasswd_gethexpwd(mem_ctx, pac_kdc_key); +	krbtgt_bytes = smbpasswd_gethexpwd(test, pac_kdc_key);  	if (!krbtgt_bytes) { -		DEBUG(0, ("(saved test) Could not interpret krbtgt key")); -		talloc_free(mem_ctx); +		torture_fail(test, "(saved test) Could not interpret krbtgt key"); +		talloc_free(test);  		return False;  	} -	krbsrv_bytes = smbpasswd_gethexpwd(mem_ctx, pac_member_key); +	krbsrv_bytes = smbpasswd_gethexpwd(test, pac_member_key);  	if (!krbsrv_bytes) { -		DEBUG(0, ("(saved test) Could not interpret krbsrv key")); -		talloc_free(mem_ctx); +		torture_fail(test, "(saved test) Could not interpret krbsrv key"); +		talloc_free(test);  		return False;  	} @@ -335,11 +338,12 @@ static BOOL torture_pac_saved_check(void)  				 krbsrv_bytes->hash, sizeof(krbsrv_bytes->hash),  				 &server_keyblock);  	if (ret) { -		DEBUG(1, ("(saved test) Server Keyblock encoding failed: %s\n",  +		torture_fail(test,  +					 "(saved test) Server Keyblock encoding failed: %s",   			  smb_get_krb5_error_message(smb_krb5_context->krb5_context,  -						     ret, mem_ctx))); +						     ret, test)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} @@ -348,22 +352,23 @@ static BOOL torture_pac_saved_check(void)  				 krbtgt_bytes->hash, sizeof(krbtgt_bytes->hash),  				 &krbtgt_keyblock);  	if (ret) { -		DEBUG(1, ("(saved test) Server Keyblock encoding failed: %s\n",  +		torture_fail(test,  +			  "(saved test) Server Keyblock encoding failed: %s",   			  smb_get_krb5_error_message(smb_krb5_context->krb5_context,  -						     ret, mem_ctx))); +						     ret, test));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	pac_file = lp_parm_string(-1,"torture","pac_file");  	if (pac_file) { -		tmp_blob.data = (uint8_t *)file_load(pac_file, &tmp_blob.length, mem_ctx); -		printf("(saved test) Loaded pac of size %ld from %s\n", (long)tmp_blob.length, pac_file); +		tmp_blob.data = (uint8_t *)file_load(pac_file, &tmp_blob.length, test); +		torture_comment(test, "(saved test) Loaded pac of size %ld from %s", (long)tmp_blob.length, pac_file);  	} else { -		tmp_blob = data_blob_talloc(mem_ctx, saved_pac, sizeof(saved_pac)); +		tmp_blob = data_blob_talloc(test, saved_pac, sizeof(saved_pac));  	}  	dump_data(10,tmp_blob.data,tmp_blob.length); @@ -383,28 +388,29 @@ static BOOL torture_pac_saved_check(void)  	ret = krb5_parse_name(smb_krb5_context->krb5_context, principal_string,   			      &client_principal);  	if (ret) { -		DEBUG(1, ("(saved test) parsing of client principal [%s] failed: %s\n",  +		torture_fail(test,  +			  "(saved test) parsing of client principal [%s] failed: %s",   			  principal_string,  -			  smb_get_krb5_error_message(smb_krb5_context->krb5_context, ret, mem_ctx))); +			  smb_get_krb5_error_message(smb_krb5_context->krb5_context, ret, test));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* Decode and verify the signaure on the PAC */ -	nt_status = kerberos_decode_pac(mem_ctx, &pac_data, +	nt_status = kerberos_decode_pac(test, &pac_data,  					tmp_blob,  					smb_krb5_context->krb5_context,  					&krbtgt_keyblock,  					&server_keyblock,   					client_principal, authtime, NULL);  	if (!NT_STATUS_IS_OK(nt_status)) { -		DEBUG(1, ("(saved test) PAC decoding failed: %s\n",  -			  nt_errstr(nt_status))); +		torture_fail(test, "(saved test) PAC decoding failed: %s",  +			  nt_errstr(nt_status));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock); @@ -412,12 +418,12 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* Parse the PAC again, for the logon info this time */ -	nt_status = kerberos_pac_logon_info(mem_ctx, &logon_info, +	nt_status = kerberos_pac_logon_info(test, &logon_info,  					    tmp_blob,  					    smb_krb5_context->krb5_context,  					    &krbtgt_keyblock, @@ -431,15 +437,16 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		printf("(saved test) PAC decoding (for logon info) failed: %s\n",  +		torture_fail(test,  +			"(saved test) PAC decoding (for logon info) failed: %s",   			  nt_errstr(nt_status)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	validation.sam3 = &logon_info->info3; -	nt_status = make_server_info_netlogon_validation(mem_ctx, +	nt_status = make_server_info_netlogon_validation(test,  							 "",  							 3, &validation,  							 &server_info_out);  @@ -450,15 +457,17 @@ static BOOL torture_pac_saved_check(void)  				    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		printf("(saved test) PAC decoding (make server info) failed: %s\n",  +		torture_fail(test,  +				"(saved test) PAC decoding (make server info) failed: %s",   		       nt_errstr(nt_status)); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	if (!pac_file && -	    !dom_sid_equal(dom_sid_parse_talloc(mem_ctx, "S-1-5-21-3048156945-3961193616-3706469200-1005"),  +	    !dom_sid_equal(dom_sid_parse_talloc(test,  +			   "S-1-5-21-3048156945-3961193616-3706469200-1005"),   			   server_info_out->account_sid)) {  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock); @@ -466,14 +475,15 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		printf("(saved test) PAC Decode resulted in *different* domain SID: %s != %s\n", -		       "S-1-5-21-3048156945-3961193616-3706469200-1005",  -		       dom_sid_string(mem_ctx, server_info_out->account_sid)); -		talloc_free(mem_ctx); +		torture_fail(test,  +			"(saved test) PAC Decode resulted in *different* domain SID: %s != %s", +		    "S-1-5-21-3048156945-3961193616-3706469200-1005",  +		       dom_sid_string(test, server_info_out->account_sid)); +		talloc_free(test);  		return False;  	} -	ret = kerberos_encode_pac(mem_ctx,  +	ret = kerberos_encode_pac(test,   				  pac_data,  				  smb_krb5_context->krb5_context,  				  &krbtgt_keyblock, @@ -487,12 +497,12 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) PAC push failed\n")); -		talloc_free(mem_ctx); +		torture_fail(test, "(saved test) PAC push failed"); +		talloc_free(test);  		return False;  	} -	dump_data(10,validate_blob.data,validate_blob.length); +	dump_data(10, validate_blob.data, validate_blob.length);  	/* compare both the length and the data bytes after a  	 * pull/push cycle.  This ensures we use the exact same @@ -505,9 +515,10 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) PAC push failed: original buffer length[%u] != created buffer length[%u]\n", -				(unsigned)tmp_blob.length, (unsigned)validate_blob.length)); -		talloc_free(mem_ctx); +		torture_fail(test,  +			"(saved test) PAC push failed: original buffer length[%u] != created buffer length[%u]", +			(unsigned)tmp_blob.length, (unsigned)validate_blob.length); +		talloc_free(test);  		return False;  	} @@ -518,18 +529,17 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) PAC push failed: length[%u] matches, but data does not\n", -			  (unsigned)tmp_blob.length)); +		torture_fail(test, "(saved test) PAC push failed: length[%u] matches, but data does not", (unsigned)tmp_blob.length);  		DEBUG(0, ("tmp_data:\n"));  		dump_data(0, tmp_blob.data, tmp_blob.length);  		DEBUG(0, ("validate_blob:\n"));  		dump_data(0, validate_blob.data, validate_blob.length); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} -	ret = kerberos_create_pac(mem_ctx,  +	ret = kerberos_create_pac(test,   				  server_info_out,  				  smb_krb5_context->krb5_context,  				  &krbtgt_keyblock, @@ -544,8 +554,8 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) regnerated PAC create failed\n")); -		talloc_free(mem_ctx); +		torture_fail(test, "(saved test) regnerated PAC create failed"); +		talloc_free(test);  		return False;  	} @@ -556,12 +566,9 @@ static BOOL torture_pac_saved_check(void)  	 * pointer, padding etc algorithms as win2k3.  	 */  	if (tmp_blob.length != validate_blob.length) { -		nt_status = ndr_pull_struct_blob(&validate_blob, mem_ctx, &pac_data2, +		nt_status = ndr_pull_struct_blob(&validate_blob, test, &pac_data2,  					      (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA); -		if (!NT_STATUS_IS_OK(nt_status)) { -			DEBUG(0,("can't parse the PAC\n")); -			return False; -		} +		torture_assert_ntstatus_ok(test, nt_status, "can't parse the PAC");  		NDR_PRINT_DEBUG(PAC_DATA, pac_data); @@ -573,19 +580,16 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) PAC regenerate failed: original buffer length[%u] != created buffer length[%u]\n", -				(unsigned)tmp_blob.length, (unsigned)validate_blob.length)); -		talloc_free(mem_ctx); +		torture_fail(test, "(saved test) PAC regenerate failed: original buffer length[%u] != created buffer length[%u]", +				(unsigned)tmp_blob.length, (unsigned)validate_blob.length); +		talloc_free(test);  		return False;  	}  	if (memcmp(tmp_blob.data, validate_blob.data, tmp_blob.length) != 0) { -		nt_status = ndr_pull_struct_blob(&validate_blob, mem_ctx, &pac_data2, +		nt_status = ndr_pull_struct_blob(&validate_blob, test, &pac_data2,  					      (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA); -		if (!NT_STATUS_IS_OK(nt_status)) { -			DEBUG(0,("can't parse the PAC\n")); -			return False; -		} +		torture_assert_ntstatus_ok(test, nt_status, "can't parse the PAC");  		NDR_PRINT_DEBUG(PAC_DATA, pac_data); @@ -597,19 +601,18 @@ static BOOL torture_pac_saved_check(void)  					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		DEBUG(0, ("(saved test) PAC regenerate failed: length[%u] matches, but data does not\n", -			  (unsigned)tmp_blob.length)); +		torture_fail(test, "(saved test) PAC regenerate failed: length[%u] matches, but data does not", (unsigned)tmp_blob.length);  		DEBUG(0, ("tmp_data:\n"));  		dump_data(0, tmp_blob.data, tmp_blob.length);  		DEBUG(0, ("validate_blob:\n"));  		dump_data(0, validate_blob.data, validate_blob.length); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* Break the auth time, to ensure we check this vital detail (not setting this caused all the pain in the first place... */ -	nt_status = kerberos_decode_pac(mem_ctx, &pac_data, +	nt_status = kerberos_decode_pac(test, &pac_data,  					tmp_blob,  					smb_krb5_context->krb5_context,  					&krbtgt_keyblock, @@ -617,14 +620,14 @@ static BOOL torture_pac_saved_check(void)  					client_principal,   					authtime + 1, NULL);  	if (NT_STATUS_IS_OK(nt_status)) { -		DEBUG(1, ("(saved test) PAC decoding DID NOT fail on broken auth time (time + 1)\n")); +		torture_fail(test, "(saved test) PAC decoding DID NOT fail on broken auth time (time + 1)");  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock);  		krb5_free_principal(smb_krb5_context->krb5_context, client_principal); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} @@ -634,18 +637,18 @@ static BOOL torture_pac_saved_check(void)  	ret = krb5_parse_name(smb_krb5_context->krb5_context,  			     "not the right principal", &client_principal);  	if (ret) { -		DEBUG(1, ("(saved test) parsing of bogus client principal failed: %s\n",  -			  smb_get_krb5_error_message(smb_krb5_context->krb5_context, ret, mem_ctx))); +		torture_fail(test, "(saved test) parsing of bogus client principal failed: %s",  +			  smb_get_krb5_error_message(smb_krb5_context->krb5_context, ret, test));  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} -	nt_status = kerberos_decode_pac(mem_ctx, &pac_data, +	nt_status = kerberos_decode_pac(test, &pac_data,  					tmp_blob,  					smb_krb5_context->krb5_context,  					&krbtgt_keyblock, @@ -653,20 +656,20 @@ static BOOL torture_pac_saved_check(void)  					client_principal,   					authtime, NULL);  	if (NT_STATUS_IS_OK(nt_status)) { -		DEBUG(1, ("(saved test) PAC decoding DID NOT fail on modified principal\n")); +		torture_fail(test, "(saved test) PAC decoding DID NOT fail on modified principal");  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	}  	/* Finally...  Bugger up the signature, and check we fail the checksum */  	tmp_blob.data[tmp_blob.length - 2]++; -	nt_status = kerberos_decode_pac(mem_ctx, &pac_data, +	nt_status = kerberos_decode_pac(test, &pac_data,  					tmp_blob,  					smb_krb5_context->krb5_context,  					&krbtgt_keyblock, @@ -674,13 +677,13 @@ static BOOL torture_pac_saved_check(void)  					client_principal,   					authtime, NULL);  	if (NT_STATUS_IS_OK(nt_status)) { -		DEBUG(1, ("(saved test) PAC decoding DID NOT fail on broken checksum\n")); +		torture_fail(test, "(saved test) PAC decoding DID NOT fail on broken checksum");  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &krbtgt_keyblock);  		krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   					    &server_keyblock); -		talloc_free(mem_ctx); +		talloc_free(test);  		return False;  	} @@ -689,14 +692,15 @@ static BOOL torture_pac_saved_check(void)  	krb5_free_keyblock_contents(smb_krb5_context->krb5_context,   				    &server_keyblock); -	talloc_free(mem_ctx); +	torture_ok(test); +	talloc_free(test);  	return True;  }  BOOL torture_pac(struct torture_context *torture)   {  	BOOL ret = True; -	ret &= torture_pac_self_check(); -	ret &= torture_pac_saved_check(); +	ret &= torture_pac_self_check(torture); +	ret &= torture_pac_saved_check(torture);  	return ret;  }  | 
