[SCM] Samba Shared Repository - branch master updated - 2243479b7415942604284028cd34a20aa0ba79c0

Jelmer Vernooij jelmer at samba.org
Sat Oct 18 16:30:19 GMT 2008


The branch, master has been updated
       via  2243479b7415942604284028cd34a20aa0ba79c0 (commit)
       via  6a89b59ca6187ef6e06124c2aa729be18b43bb75 (commit)
      from  4f9b6fdce4340a1022f659daaa035d0336ff6b53 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2243479b7415942604284028cd34a20aa0ba79c0
Merge: 6a89b59ca6187ef6e06124c2aa729be18b43bb75 4f9b6fdce4340a1022f659daaa035d0336ff6b53
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Oct 18 18:30:10 2008 +0200

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

commit 6a89b59ca6187ef6e06124c2aa729be18b43bb75
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Oct 18 18:09:04 2008 +0200

    Add TALLOC_CTX pointer to strhex_to_data_blob for consistency with Samba
    3.

-----------------------------------------------------------------------

Summary of changes:
 lib/util/util.h                                |    2 +-
 lib/util/util_str.c                            |    4 ++--
 source4/dsdb/samdb/ldb_modules/extended_dn.c   |    4 ++--
 source4/dsdb/samdb/ldb_modules/password_hash.c |    6 ++----
 source4/dsdb/schema/schema_init.c              |    6 ++----
 source4/dsdb/schema/schema_set.c               |    3 +--
 source4/kdc/hdb-samba4.c                       |    3 +--
 source4/lib/registry/util.c                    |    3 +--
 source4/librpc/ndr/ndr_drsuapi.c               |    5 ++---
 source4/torture/auth/ntlmssp.c                 |   12 ++++++------
 source4/torture/ndr/ndr.c                      |    4 ++--
 source4/utils/ntlm_auth.c                      |    6 +++---
 12 files changed, 25 insertions(+), 33 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/util.h b/lib/util/util.h
index 47adf06..38b5986 100644
--- a/lib/util/util.h
+++ b/lib/util/util.h
@@ -241,7 +241,7 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t len, const char *strhex);
 /** 
  * Parse a hex string and return a data blob. 
  */
-_PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(const char *strhex) ;
+_PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex) ;
 
 /**
  * Routine to print a buffer as HEX digits, into an allocated string.
diff --git a/lib/util/util_str.c b/lib/util/util_str.c
index bf4ae4d..afa772a 100644
--- a/lib/util/util_str.c
+++ b/lib/util/util_str.c
@@ -216,9 +216,9 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t len, const char *strhex)
 /** 
  * Parse a hex string and return a data blob. 
  */
-_PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(const char *strhex) 
+_PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex) 
 {
-	DATA_BLOB ret_blob = data_blob(NULL, strlen(strhex)/2+1);
+	DATA_BLOB ret_blob = data_blob(mem_ctx, strlen(strhex)/2+1);
 
 	ret_blob.length = strhex_to_str((char *)ret_blob.data, 	
 					strlen(strhex), 
diff --git a/source4/dsdb/samdb/ldb_modules/extended_dn.c b/source4/dsdb/samdb/ldb_modules/extended_dn.c
index 88a8887..a0602d9 100644
--- a/source4/dsdb/samdb/ldb_modules/extended_dn.c
+++ b/source4/dsdb/samdb/ldb_modules/extended_dn.c
@@ -424,7 +424,7 @@ static int extended_search(struct ldb_module *module, struct ldb_request *req)
 				valstr = str;
 			} else {
 				DATA_BLOB binary;
-				binary = strhex_to_data_blob(str);
+				binary = strhex_to_data_blob(NULL, str);
 				if (!binary.data) {
 					ldb_oom(module->ldb);
 					return LDB_ERR_OPERATIONS_ERROR;
@@ -471,7 +471,7 @@ static int extended_search(struct ldb_module *module, struct ldb_request *req)
 				valstr = str;
 			} else {
 				DATA_BLOB binary;
-				binary = strhex_to_data_blob(str);
+				binary = strhex_to_data_blob(NULL, str);
 				if (!binary.data) {
 					ldb_oom(module->ldb);
 					return LDB_ERR_OPERATIONS_ERROR;
diff --git a/source4/dsdb/samdb/ldb_modules/password_hash.c b/source4/dsdb/samdb/ldb_modules/password_hash.c
index c4451d1..5ed7f1f 100644
--- a/source4/dsdb/samdb/ldb_modules/password_hash.c
+++ b/source4/dsdb/samdb/ldb_modules/password_hash.c
@@ -482,12 +482,11 @@ static int setup_primary_kerberos(struct setup_password_fields_io *io,
 	if (old_scp) {
 		DATA_BLOB blob;
 
-		blob = strhex_to_data_blob(old_scp->data);
+		blob = strhex_to_data_blob(io->ac, old_scp->data);
 		if (!blob.data) {
 			ldb_oom(io->ac->module->ldb);
 			return LDB_ERR_OPERATIONS_ERROR;
 		}
-		talloc_steal(io->ac, blob.data);
 
 		/* TODO: use ndr_pull_struct_blob_all(), when the ndr layer handles it correct with relative pointers */
 		ndr_err = ndr_pull_struct_blob(&blob, io->ac, lp_iconv_convenience(ldb_get_opaque(io->ac->module->ldb, "loadparm")), &_old_pkb,
@@ -596,12 +595,11 @@ static int setup_primary_kerberos_newer(struct setup_password_fields_io *io,
 	if (old_scp) {
 		DATA_BLOB blob;
 
-		blob = strhex_to_data_blob(old_scp->data);
+		blob = strhex_to_data_blob(io->ac, old_scp->data);
 		if (!blob.data) {
 			ldb_oom(io->ac->module->ldb);
 			return LDB_ERR_OPERATIONS_ERROR;
 		}
-		talloc_steal(io->ac, blob.data);
 
 		/* TODO: use ndr_pull_struct_blob_all(), when the ndr layer handles it correct with relative pointers */
 		ndr_err = ndr_pull_struct_blob(&blob, io->ac,
diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c
index 93697a3..69d4c2c 100644
--- a/source4/dsdb/schema/schema_init.c
+++ b/source4/dsdb/schema/schema_init.c
@@ -199,9 +199,8 @@ WERROR dsdb_get_oid_mappings_ldb(const struct dsdb_schema *schema,
 		return ntstatus_to_werror(nt_status);
 	}
 
-	*schemaInfo = strhex_to_data_blob(schema->schema_info);
+	*schemaInfo = strhex_to_data_blob(mem_ctx, schema->schema_info);
 	W_ERROR_HAVE_NO_MEMORY(schemaInfo->data);
-	talloc_steal(mem_ctx, schemaInfo->data);
 
 	return WERR_OK;
 }
@@ -819,12 +818,11 @@ int dsdb_schema_from_ldb_results(TALLOC_CTX *mem_ctx, struct ldb_context *ldb,
 	}
 	info_val = ldb_msg_find_ldb_val(schema_res->msgs[0], "schemaInfo");
 	if (!info_val) {
-		info_val_default = strhex_to_data_blob("FF0000000000000000000000000000000000000000");
+		info_val_default = strhex_to_data_blob(mem_ctx, "FF0000000000000000000000000000000000000000");
 		if (!info_val_default.data) {
 			dsdb_oom(error_string, mem_ctx);
 			return LDB_ERR_OPERATIONS_ERROR;
 		}
-		talloc_steal(mem_ctx, info_val_default.data);
 		info_val = &info_val_default;
 	}
 
diff --git a/source4/dsdb/schema/schema_set.c b/source4/dsdb/schema/schema_set.c
index f8de82e..d0aae4e 100644
--- a/source4/dsdb/schema/schema_set.c
+++ b/source4/dsdb/schema/schema_set.c
@@ -328,11 +328,10 @@ WERROR dsdb_attach_schema_from_ldif_file(struct ldb_context *ldb, const char *pf
 
 	info_val = ldb_msg_find_ldb_val(msg, "schemaInfo");
 	if (!info_val) {
-		info_val_default = strhex_to_data_blob("FF0000000000000000000000000000000000000000");
+		info_val_default = strhex_to_data_blob(mem_ctx, "FF0000000000000000000000000000000000000000");
 		if (!info_val_default.data) {
 			goto nomem;
 		}
-		talloc_steal(mem_ctx, info_val_default.data);
 		info_val = &info_val_default;
 	}
 
diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c
index 3a1379b..b6a48e7 100644
--- a/source4/kdc/hdb-samba4.c
+++ b/source4/kdc/hdb-samba4.c
@@ -277,12 +277,11 @@ static krb5_error_code LDB_message2entry_keys(krb5_context context,
 	if (scpk) {
 		DATA_BLOB blob;
 
-		blob = strhex_to_data_blob(scpk->data);
+		blob = strhex_to_data_blob(mem_ctx, scpk->data);
 		if (!blob.data) {
 			ret = ENOMEM;
 			goto out;
 		}
-		talloc_steal(mem_ctx, blob.data);
 
 		/* we cannot use ndr_pull_struct_blob_all() here, as w2k and w2k3 add padding bytes */
 		ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, iconv_convenience, &_pkb,
diff --git a/source4/lib/registry/util.c b/source4/lib/registry/util.c
index 68efd56..b3b6e49 100644
--- a/source4/lib/registry/util.c
+++ b/source4/lib/registry/util.c
@@ -140,8 +140,7 @@ _PUBLIC_ bool reg_string_to_val(TALLOC_CTX *mem_ctx,
 			break;
 
 		case REG_BINARY:
-			*data = strhex_to_data_blob(data_str);
-			talloc_steal(mem_ctx, data->data);
+			*data = strhex_to_data_blob(mem_ctx, data_str);
 			break;
 
 		default:
diff --git a/source4/librpc/ndr/ndr_drsuapi.c b/source4/librpc/ndr/ndr_drsuapi.c
index cb022d2..064b50a 100644
--- a/source4/librpc/ndr/ndr_drsuapi.c
+++ b/source4/librpc/ndr/ndr_drsuapi.c
@@ -92,7 +92,7 @@ enum ndr_err_code ndr_push_drsuapi_DsReplicaOID(struct ndr_push *ndr, int ndr_fl
 			DATA_BLOB blob;
 
 			if (strncasecmp("ff", r->oid, 2) == 0) {
-				blob = strhex_to_data_blob(r->oid);
+				blob = strhex_to_data_blob(ndr, r->oid);
 				if (!blob.data) {
 					return ndr_push_error(ndr, NDR_ERR_SUBCONTEXT,
 							      "HEX String Conversion Error: %s\n",
@@ -101,7 +101,6 @@ enum ndr_err_code ndr_push_drsuapi_DsReplicaOID(struct ndr_push *ndr, int ndr_fl
 			} else {
 				_OID_PUSH_CHECK(ber_write_OID_String(&blob, r->oid));
 			}
-			talloc_steal(ndr, blob.data);
 
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, blob.length));
 			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, blob.data, blob.length));
@@ -165,7 +164,7 @@ size_t ndr_size_drsuapi_DsReplicaOID_oid(const char *oid, int flags)
 	if (!oid) return 0;
 
 	if (strncasecmp("ff", oid, 2) == 0) {
-		_blob = strhex_to_data_blob(oid);
+		_blob = strhex_to_data_blob(NULL, oid);
 		if (_blob.data) {
 			ret = _blob.length;
 		}
diff --git a/source4/torture/auth/ntlmssp.c b/source4/torture/auth/ntlmssp.c
index 739a048..1e8b339 100644
--- a/source4/torture/auth/ntlmssp.c
+++ b/source4/torture/auth/ntlmssp.c
@@ -48,7 +48,7 @@ static bool torture_ntlmssp_self_check(struct torture_context *tctx)
 
 	gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
 
-	gensec_ntlmssp_state->session_key = strhex_to_data_blob("0102030405060708090a0b0c0d0e0f00");
+	gensec_ntlmssp_state->session_key = strhex_to_data_blob(tctx, "0102030405060708090a0b0c0d0e0f00");
 	dump_data_pw("NTLMSSP session key: \n", 
 		     gensec_ntlmssp_state->session_key.data,  
 		     gensec_ntlmssp_state->session_key.length);
@@ -59,11 +59,11 @@ static bool torture_ntlmssp_self_check(struct torture_context *tctx)
 		ntlmssp_sign_init(gensec_ntlmssp_state),
 		"Failed to sign_init");
 
-	data = strhex_to_data_blob("6a43494653");
+	data = strhex_to_data_blob(tctx, "6a43494653");
 	gensec_ntlmssp_sign_packet(gensec_security, gensec_security,
 				   data.data, data.length, data.data, data.length, &sig);
 
-	expected_sig = strhex_to_data_blob("01000000e37f97f2544f4d7e00000000");
+	expected_sig = strhex_to_data_blob(tctx, "01000000e37f97f2544f4d7e00000000");
 
 	dump_data_pw("NTLMSSP calc sig:     ", sig.data, sig.length);
 	dump_data_pw("NTLMSSP expected sig: ", expected_sig.data, expected_sig.length);
@@ -103,7 +103,7 @@ static bool torture_ntlmssp_self_check(struct torture_context *tctx)
 
 	gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
 
-	gensec_ntlmssp_state->session_key = strhex_to_data_blob("0102030405e538b0");
+	gensec_ntlmssp_state->session_key = strhex_to_data_blob(tctx, "0102030405e538b0");
 	dump_data_pw("NTLMSSP session key: \n", 
 		     gensec_ntlmssp_state->session_key.data,  
 		     gensec_ntlmssp_state->session_key.length);
@@ -114,11 +114,11 @@ static bool torture_ntlmssp_self_check(struct torture_context *tctx)
 		ntlmssp_sign_init(gensec_ntlmssp_state),
 		"Failed to sign_init");
 
-	data = strhex_to_data_blob("6a43494653");
+	data = strhex_to_data_blob(tctx, "6a43494653");
 	gensec_ntlmssp_sign_packet(gensec_security, gensec_security,
 			    data.data, data.length, data.data, data.length, &sig);
 
-	expected_sig = strhex_to_data_blob("0100000078010900397420fe0e5a0f89");
+	expected_sig = strhex_to_data_blob(tctx, "0100000078010900397420fe0e5a0f89");
 
 	dump_data_pw("NTLMSSP calc sig:     ", sig.data, sig.length);
 	dump_data_pw("NTLMSSP expected sig: ", expected_sig.data, expected_sig.length);
diff --git a/source4/torture/ndr/ndr.c b/source4/torture/ndr/ndr.c
index 8d4d43b..70bd070 100644
--- a/source4/torture/ndr/ndr.c
+++ b/source4/torture/ndr/ndr.c
@@ -96,7 +96,7 @@ static bool test_check_string_terminator(struct torture_context *tctx)
 	TALLOC_CTX *mem_ctx = tctx;
 
 	/* Simple test */
-	blob = strhex_to_data_blob("0000");
+	blob = strhex_to_data_blob(tctx, "0000");
 	
 	ndr = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(tctx->lp_ctx));
 
@@ -115,7 +115,7 @@ static bool test_check_string_terminator(struct torture_context *tctx)
 
 	talloc_free(ndr);
 
-	blob = strhex_to_data_blob("11220000");
+	blob = strhex_to_data_blob(tctx, "11220000");
 	ndr = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(tctx->lp_ctx));
 
 	torture_assert_ndr_success(tctx,
diff --git a/source4/utils/ntlm_auth.c b/source4/utils/ntlm_auth.c
index 6a63028..1ec87c6 100644
--- a/source4/utils/ntlm_auth.c
+++ b/source4/utils/ntlm_auth.c
@@ -869,7 +869,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
 	}
 
 	if (strequal(request, "LANMAN-Challenge")) {
-		challenge = strhex_to_data_blob(parameter);
+		challenge = strhex_to_data_blob(NULL, parameter);
 		if (challenge.length != 8) {
 			mux_printf(mux_id, "Error: hex decode of %s failed! (got %d bytes, expected 8)\n.\n", 
 				  parameter,
@@ -877,7 +877,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
 			challenge = data_blob(NULL, 0);
 		}
 	} else if (strequal(request, "NT-Response")) {
-		nt_response = strhex_to_data_blob(parameter);
+		nt_response = strhex_to_data_blob(NULL, parameter);
 		if (nt_response.length < 24) {
 			mux_printf(mux_id, "Error: hex decode of %s failed! (only got %d bytes, needed at least 24)\n.\n", 
 				  parameter,
@@ -885,7 +885,7 @@ static void manage_ntlm_server_1_request(enum stdio_helper_mode stdio_helper_mod
 			nt_response = data_blob(NULL, 0);
 		}
 	} else if (strequal(request, "LANMAN-Response")) {
-		lm_response = strhex_to_data_blob(parameter);
+		lm_response = strhex_to_data_blob(NULL, parameter);
 		if (lm_response.length != 24) {
 			mux_printf(mux_id, "Error: hex decode of %s failed! (got %d bytes, expected 24)\n.\n", 
 				  parameter,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list