From 5f205ab48d8ac3b7af573ea0be1ce095ab835448 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 28 Oct 2007 19:15:08 +0100 Subject: [PATCH] Make base64_encode_data_blob return a talloced string --- source/lib/afs.c | 6 +++--- source/lib/util_str.c | 3 ++- source/rpc_server/srv_samr_util.c | 8 ++++---- source/utils/net_rpc_samsync.c | 4 ++-- source/utils/ntlm_auth.c | 20 ++++++++++---------- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/source/lib/afs.c b/source/lib/afs.c index e9a70590280..35f213fd080 100644 --- a/source/lib/afs.c +++ b/source/lib/afs.c @@ -53,7 +53,7 @@ static char *afs_encode_token(const char *cell, const DATA_BLOB ticket, base64_key = base64_encode_data_blob(key); if (base64_key == NULL) { - free(base64_ticket); + TALLOC_FREE(base64_ticket); return NULL; } @@ -63,8 +63,8 @@ static char *afs_encode_token(const char *cell, const DATA_BLOB ticket, DEBUG(10, ("Got ticket string:\n%s\n", result)); - free(base64_ticket); - free(base64_key); + TALLOC_FREE(base64_ticket); + TALLOC_FREE(base64_key); return result; } diff --git a/source/lib/util_str.c b/source/lib/util_str.c index 6458ae3e05d..f1078c6383a 100644 --- a/source/lib/util_str.c +++ b/source/lib/util_str.c @@ -2528,7 +2528,8 @@ char *base64_encode_data_blob(DATA_BLOB data) out_cnt = 0; len = data.length; output_len = data.length * 2; - result = (char *)SMB_MALLOC(output_len); /* get us plenty of space */ + result = TALLOC_ARRAY(talloc_tos(), char, output_len); /* get us plenty of space */ + SMB_ASSERT(result != NULL); while (len-- && out_cnt < (data.length * 2) - 5) { int c = (unsigned char) *(data.data++); diff --git a/source/rpc_server/srv_samr_util.c b/source/rpc_server/srv_samr_util.c index 7bac25e6117..f7e20797a7e 100644 --- a/source/rpc_server/srv_samr_util.c +++ b/source/rpc_server/srv_samr_util.c @@ -58,7 +58,7 @@ void copy_id20_to_sam_passwd(struct samu *to, SAM_USER_INFO_20 *from) if (STRING_CHANGED_NC(old_string,new_string)) pdb_set_munged_dial(to , new_string, PDB_CHANGED); - SAFE_FREE(new_string); + TALLOC_FREE(new_string); } } @@ -201,7 +201,7 @@ void copy_id21_to_sam_passwd(struct samu *to, SAM_USER_INFO_21 *from) if (STRING_CHANGED_NC(old_string,newstr)) pdb_set_munged_dial(to , newstr, PDB_CHANGED); - SAFE_FREE(newstr); + TALLOC_FREE(newstr); } if (from->fields_present & ACCT_RID) { @@ -425,7 +425,7 @@ void copy_id23_to_sam_passwd(struct samu *to, SAM_USER_INFO_23 *from) if (STRING_CHANGED_NC(old_string, newstr)) pdb_set_munged_dial(to , newstr, PDB_CHANGED); - SAFE_FREE(newstr); + TALLOC_FREE(newstr); } if (from->fields_present & ACCT_RID) { @@ -637,7 +637,7 @@ void copy_id25_to_sam_passwd(struct samu *to, SAM_USER_INFO_25 *from) if (STRING_CHANGED_NC(old_string,newstr)) pdb_set_munged_dial(to , newstr, PDB_CHANGED); - SAFE_FREE(newstr); + TALLOC_FREE(newstr); } if (from->fields_present & ACCT_RID) { diff --git a/source/utils/net_rpc_samsync.c b/source/utils/net_rpc_samsync.c index 2b5eac6999d..3d88a974bfc 100644 --- a/source/utils/net_rpc_samsync.c +++ b/source/utils/net_rpc_samsync.c @@ -369,7 +369,7 @@ static NTSTATUS sam_account_from_delta(struct samu *account, SAM_ACCOUNT_INFO *d if (STRING_CHANGED_NC(old_string, newstr)) pdb_set_munged_dial(account, newstr, PDB_CHANGED); - SAFE_FREE(newstr); + TALLOC_FREE(newstr); } /* User and group sid */ @@ -1385,7 +1385,7 @@ static int fprintf_attr(FILE *add_fd, const char *attr_name, res = fprintf(add_fd, "%s:: %s\n", attr_name, base64); TALLOC_FREE(value); - SAFE_FREE(base64); + TALLOC_FREE(base64); return res; } diff --git a/source/utils/ntlm_auth.c b/source/utils/ntlm_auth.c index b51827fd835..0b50ced0b97 100644 --- a/source/utils/ntlm_auth.c +++ b/source/utils/ntlm_auth.c @@ -738,7 +738,7 @@ static void manage_squid_ntlmssp_request(enum stdio_helper_mode stdio_helper_mod if(have_session_key) { char *key64 = base64_encode_data_blob(session_key); x_fprintf(x_stdout, "GK %s\n", key64?key64:""); - SAFE_FREE(key64); + TALLOC_FREE(key64); } else { x_fprintf(x_stdout, "BH\n"); } @@ -767,7 +767,7 @@ static void manage_squid_ntlmssp_request(enum stdio_helper_mode stdio_helper_mod if (NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { char *reply_base64 = base64_encode_data_blob(reply); x_fprintf(x_stdout, "TT %s\n", reply_base64); - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); data_blob_free(&reply); DEBUG(10, ("NTLMSSP challenge\n")); } else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_ACCESS_DENIED)) { @@ -888,7 +888,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo if(have_session_key) { char *key64 = base64_encode_data_blob(session_key); x_fprintf(x_stdout, "GK %s\n", key64?key64:""); - SAFE_FREE(key64); + TALLOC_FREE(key64); } else { x_fprintf(x_stdout, "BH\n"); @@ -928,7 +928,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo } else { x_fprintf(x_stdout, "KK %s\n", reply_base64); } - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); if (first) { initial_message = reply; } else { @@ -938,7 +938,7 @@ static void manage_client_ntlmssp_request(enum stdio_helper_mode stdio_helper_mo } else if (NT_STATUS_IS_OK(nt_status)) { char *reply_base64 = base64_encode_data_blob(reply); x_fprintf(x_stdout, "AF %s\n", reply_base64); - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); if(have_session_key) data_blob_free(&session_key); @@ -1033,7 +1033,7 @@ static void offer_gss_spnego_mechs(void) { reply_base64 = base64_encode_data_blob(token); x_fprintf(x_stdout, "TT %s *\n", reply_base64); - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); data_blob_free(&token); DEBUG(10, ("sent SPNEGO negTokenInit\n")); return; @@ -1264,7 +1264,7 @@ static void manage_gss_spnego_request(enum stdio_helper_mode stdio_helper_mode, x_fprintf(x_stdout, "%s %s %s\n", reply_code, reply_base64, reply_argument); - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); data_blob_free(&token); return; @@ -1329,7 +1329,7 @@ static bool manage_client_ntlmssp_init(SPNEGO_DATA spnego) to_server_base64 = base64_encode_data_blob(to_server); data_blob_free(&to_server); x_fprintf(x_stdout, "KK %s\n", to_server_base64); - SAFE_FREE(to_server_base64); + TALLOC_FREE(to_server_base64); return True; } @@ -1387,7 +1387,7 @@ static void manage_client_ntlmssp_targ(SPNEGO_DATA spnego) to_server_base64 = base64_encode_data_blob(to_server); data_blob_free(&to_server); x_fprintf(x_stdout, "KK %s\n", to_server_base64); - SAFE_FREE(to_server_base64); + TALLOC_FREE(to_server_base64); return; } @@ -1474,7 +1474,7 @@ static bool manage_client_krb5_init(SPNEGO_DATA spnego) reply_base64 = base64_encode_data_blob(to_server); x_fprintf(x_stdout, "KK %s *\n", reply_base64); - SAFE_FREE(reply_base64); + TALLOC_FREE(reply_base64); data_blob_free(&to_server); DEBUG(10, ("sent GSS-SPNEGO KERBEROS5 negTokenInit\n")); return True;