[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed Dec 14 05:30:02 UTC 2022


The branch, master has been updated
       via  ac78cb71d69 libads: Save intermediate NULL checks with talloc_asprintf_addbuf()
       via  300ad4ff127 lib: Save intermediate NULL checks with talloc_asprintf_addbuf()
       via  4156d37db17 winbind: Save lines with talloc_asprintf_addbuf()
       via  f25b6de771d winbind: Save an intermediate NULL check with talloc_asprintf_addbuf()
       via  fa8a657b91c auth4: Save lines with talloc_asprintf_addbuf() in authsam_domain_group_filter()
       via  6b6f8debb5d libcldap: Save lines in cldap_netlogon_create_filter() with talloc_asprintf_addbuf()
       via  c86112fe90b dns_server: Use talloc_asprintf_addbuf() in b9_format()
       via  cbcf7f0d21b lib: Use talloc_asprintf_addbuf() in rdn_name_add()
       via  ffba59b5c0b lib: Use talloc_asprintf_addbuf() in ldb_module_call_chain()
       via  fe8895c83c5 lib: Use talloc_asprintf_addbuf() in print_socket_options()
       via  bcdbe6ef6b5 lib: Use talloc_asprintf_addbuf() in ldif_write_prefixMap()
       via  c692b5c95bd lib: Use talloc_asprintf_addbuf() in str_list_join_shell()
       via  2c7766c28f2 lib: Use talloc_asprintf_addbuf() in str_list_join()
       via  101396ab765 lib: Use talloc_asprintf_addbuf() in debug.c
       via  ccb5bafe93e lib: Move talloc_asprintf_addbuf() to talloc
       via  7870e82cb44 lib: Fix whitespace
      from  5955dc1e4fd smbd: set long process name of smbd child processes to "smbd: <CLIENT IP>"

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


- Log -----------------------------------------------------------------
commit ac78cb71d69d0307a668311e94e7181db6ad840e
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Nov 30 14:48:33 2022 +0100

    libads: Save intermediate NULL checks with talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Wed Dec 14 05:29:51 UTC 2022 on sn-devel-184

commit 300ad4ff1273b8656986e4e7853418c9238122ca
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Nov 30 14:44:13 2022 +0100

    lib: Save intermediate NULL checks with talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 4156d37db177b3b047fc0a448912d9bcb9354994
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Nov 30 14:28:54 2022 +0100

    winbind: Save lines with talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit f25b6de771df587e58a28ae417bb5a2f596ec5a2
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Nov 30 14:23:26 2022 +0100

    winbind: Save an intermediate NULL check with talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fa8a657b91c123849eb40f74dbce6974ec04338b
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Nov 29 10:48:25 2022 +0100

    auth4: Save lines with talloc_asprintf_addbuf() in authsam_domain_group_filter()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6b6f8debb5dedf1520a7bedfa0277849f70683dd
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Nov 29 10:46:42 2022 +0100

    libcldap: Save lines in cldap_netlogon_create_filter() with talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit c86112fe90b6ebd2f4206c9c2f78b845543cb96e
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Nov 29 10:37:03 2022 +0100

    dns_server: Use talloc_asprintf_addbuf() in b9_format()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit cbcf7f0d21b146b52bf472a3627b7ea8cd3d0b80
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 11:25:32 2022 +0100

    lib: Use talloc_asprintf_addbuf() in rdn_name_add()
    
    Add implicit NULL checks
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit ffba59b5c0b584d503f223dd5bcde84799b5d0c5
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 11:07:25 2022 +0100

    lib: Use talloc_asprintf_addbuf() in ldb_module_call_chain()
    
    This was exactly what talloc_asprintf_addbuf() does.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fe8895c83c560f424edd35d9394414c2801127d2
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 11:01:16 2022 +0100

    lib: Use talloc_asprintf_addbuf() in print_socket_options()
    
    With the proper NULL checks we don't need the stackframe,
    use a passed in context instead.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit bcdbe6ef6b59ae3638f263fbd5ddf4107c3f52cf
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 10:58:46 2022 +0100

    lib: Use talloc_asprintf_addbuf() in ldif_write_prefixMap()
    
    The first call of talloc_asprintf_append() did not have a NULL check.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit c692b5c95bdc0d96ab7797a59b94addaa1c80d94
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 10:55:04 2022 +0100

    lib: Use talloc_asprintf_addbuf() in str_list_join_shell()
    
    This adds proper NULL checks via talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 2c7766c28f2801d0b103d6a5046098810a4f0bee
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 10:43:06 2022 +0100

    lib: Use talloc_asprintf_addbuf() in str_list_join()
    
    This adds intermediate NULL checks via talloc_asprintf_addbuf()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 101396ab765a5cad90b43165253c960b579a2f1d
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 10:38:50 2022 +0100

    lib: Use talloc_asprintf_addbuf() in debug.c
    
    Slightly simplify debug_list_class_names_and_levels()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit ccb5bafe93eb431ba53569b5176317bcbdeae322
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 10:19:54 2022 +0100

    lib: Move talloc_asprintf_addbuf() to talloc
    
    I wanted to use this in debug.c, but this would have meant to pollute
    debug's deps with a lot of stuff. Also, looking through uses of
    talloc_asprint_append(), very many of those don't do NULL checks
    properly and could benefit from the _addbuf() flavor. We can add a
    vasprintf variant later if the need shows up.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 7870e82cb4405a983f106a119203f1e193cb2f12
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Nov 28 08:35:57 2022 +0100

    lib: Fix whitespace
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 lib/ldb-samba/ldif_handlers.c                      | 69 +++++++++----------
 lib/ldb/common/ldb_dn.c                            | 14 ++--
 lib/ldb/common/ldb_modules.c                       |  9 +--
 lib/ldb/modules/rdn_name.c                         | 16 ++---
 ...oc-util-2.3.0.sigs => pytalloc-util-2.3.5.sigs} |  0
 .../ABI/{talloc-2.1.11.sigs => talloc-2.3.5.sigs}  |  1 +
 lib/talloc/talloc.c                                | 23 +++++++
 lib/talloc/talloc.h                                | 14 ++++
 lib/talloc/wscript                                 |  2 +-
 lib/util/debug.c                                   | 15 ++--
 lib/util/samba_util.h                              | 14 ----
 lib/util/util_net.c                                | 19 ++----
 lib/util/util_str.c                                | 23 -------
 lib/util/util_strlist.c                            | 55 +++++++--------
 libcli/cldap/cldap.c                               | 42 ++++--------
 source3/lib/substitute.c                           | 34 +++++-----
 source3/libads/ldap_schema.c                       | 79 ++++++++++------------
 source3/winbindd/idmap_ad.c                        | 11 +--
 source3/winbindd/winbindd_misc.c                   |  4 +-
 source3/winbindd/winbindd_wins_byname.c            | 11 ++-
 source4/auth/sam.c                                 | 18 ++---
 source4/dns_server/dlz_bind9.c                     |  2 +-
 22 files changed, 208 insertions(+), 267 deletions(-)
 copy lib/talloc/ABI/{pytalloc-util-2.3.0.sigs => pytalloc-util-2.3.5.sigs} (100%)
 copy lib/talloc/ABI/{talloc-2.1.11.sigs => talloc-2.3.5.sigs} (98%)


Changeset truncated at 500 lines:

diff --git a/lib/ldb-samba/ldif_handlers.c b/lib/ldb-samba/ldif_handlers.c
index 78a433748bb..b8f04747456 100644
--- a/lib/ldb-samba/ldif_handlers.c
+++ b/lib/ldb-samba/ldif_handlers.c
@@ -1,4 +1,4 @@
-/* 
+/*
    ldb database library - ldif handlers for Samba
 
    Copyright (C) Andrew Tridgell 2005
@@ -7,7 +7,7 @@
      ** NOTE! The following LGPL license applies to the ldb
      ** library. This does NOT imply that all of Samba is released
      ** under the LGPL
-   
+
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
@@ -59,7 +59,7 @@ static int ldif_write_NDR(struct ldb_context *ldb, void *mem_ctx,
 		return ldb_handler_copy(ldb, mem_ctx, in, out);
 	}
 	p = talloc_size(mem_ctx, struct_size);
-	err = ndr_pull_struct_blob(in, mem_ctx, 
+	err = ndr_pull_struct_blob(in, mem_ctx,
 				   p, pull_fn);
 	if (err != NDR_ERR_SUCCESS) {
 		/* fail in not in mask_error mode */
@@ -74,7 +74,7 @@ static int ldif_write_NDR(struct ldb_context *ldb, void *mem_ctx,
 	out->data = (uint8_t *)ndr_print_struct_string(mem_ctx, print_fn, "NDR", p);
 	talloc_free(p);
 	if (out->data == NULL) {
-		return ldb_handler_copy(ldb, mem_ctx, in, out);		
+		return ldb_handler_copy(ldb, mem_ctx, in, out);
 	}
 	out->length = strlen((char *)out->data);
 	return 0;
@@ -95,18 +95,18 @@ static int ldif_read_objectSid(struct ldb_context *ldb, void *mem_ctx,
 		char p[in->length+1];
 		memcpy(p, in->data, in->length);
 		p[in->length] = '\0';
-		
+
 		ret = dom_sid_parse(p, &sid);
 		if (ret == false) {
 			return -1;
 		}
-		
+
 		*out = data_blob_talloc(mem_ctx, NULL,
 					ndr_size_dom_sid(&sid, 0));
 		if (out->data == NULL) {
 			return -1;
 		}
-	
+
 		ndr_err = ndr_push_struct_into_fixed_blob(out, &sid,
 				(ndr_push_flags_fn_t)ndr_push_dom_sid);
 		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
@@ -144,7 +144,7 @@ bool ldif_comparision_objectSid_isString(const struct ldb_val *v)
 	}
 
 	if (strncmp("S-", (const char *)v->data, 2) != 0) return false;
-	
+
 	return true;
 }
 
@@ -208,7 +208,7 @@ static int extended_dn_read_SID(struct ldb_context *ldb, void *mem_ctx,
 			return 0;
 		}
 	}
-	
+
 	/* Perhaps not a string after all */
 	*out = data_blob_talloc(mem_ctx, NULL, in->length/2+1);
 
@@ -290,13 +290,13 @@ static int extended_dn_read_GUID(struct ldb_context *ldb, void *mem_ctx,
 	if (in->length != 32) {
 		return -1;
 	}
-		
+
 	*out = data_blob_talloc(mem_ctx, NULL, in->length/2+1);
-	
+
 	if (!out->data) {
 		return -1;
 	}
-	
+
 	(*out).length = strhex_to_str((char *)out->data, out->length,
 				      (const char *)in->data, in->length);
 
@@ -407,12 +407,12 @@ static int ldif_write_ntSecurityDescriptor(struct ldb_context *ldb, void *mem_ct
 	enum ndr_err_code ndr_err;
 
 	if (ldb_get_flags(ldb) & LDB_FLG_SHOW_BINARY) {
-		return ldif_write_NDR(ldb, mem_ctx, in, out, 
+		return ldif_write_NDR(ldb, mem_ctx, in, out,
 				      sizeof(struct security_descriptor),
 				      (ndr_pull_flags_fn_t)ndr_pull_security_descriptor,
 				      (ndr_print_fn_t)ndr_print_security_descriptor,
 				      true);
-				      
+
 	}
 
 	sd = talloc(mem_ctx, struct security_descriptor);
@@ -457,7 +457,7 @@ static int ldif_write_sddlSecurityDescriptor(struct ldb_context *ldb, void *mem_
 	return ldb_handler_copy(ldb, mem_ctx, in, out);
 }
 
-/* 
+/*
    canonicalise an objectCategory.  We use the long form as the canonical form:
    'person' becomes cn=Person,cn=Schema,cn=Configuration,<basedn>
 
@@ -588,7 +588,7 @@ static int ldif_read_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 
 	/* If this does not parse, then it is probably the text version, and we should try it that way */
 	blob->version = PREFIX_MAP_VERSION_DSDB;
-	
+
 	string = talloc_strndup(mem_ctx, (const char *)in->data, in->length);
 	if (string == NULL) {
 		talloc_free(blob);
@@ -612,9 +612,9 @@ static int ldif_read_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 		if (line == p) {
 			break;
 		}
-		
-		blob->ctr.dsdb.mappings = talloc_realloc(blob, 
-							 blob->ctr.dsdb.mappings, 
+
+		blob->ctr.dsdb.mappings = talloc_realloc(blob,
+							 blob->ctr.dsdb.mappings,
 							 struct drsuapi_DsReplicaOIDMapping,
 							 blob->ctr.dsdb.num_mappings+1);
 		if (!blob->ctr.dsdb.mappings) {
@@ -650,7 +650,7 @@ static int ldif_read_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 		}
 	}
 
-	ndr_err = ndr_push_struct_blob(out, mem_ctx, 
+	ndr_err = ndr_push_struct_blob(out, mem_ctx,
 				       blob,
 				       (ndr_push_flags_fn_t)ndr_push_prefixMapBlob);
 	talloc_free(tmp_ctx);
@@ -694,7 +694,7 @@ static int ldif_write_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 	if (blob == NULL) {
 		return -1;
 	}
-	ndr_err = ndr_pull_struct_blob_all(in, blob, 
+	ndr_err = ndr_pull_struct_blob_all(in, blob,
 					   blob,
 					   (ndr_pull_flags_fn_t)ndr_pull_prefixMapBlob);
 	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
@@ -713,7 +713,7 @@ static int ldif_write_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 		char *partial_oid = NULL;
 
 		if (i > 0) {
-			string = talloc_asprintf_append(string, ";"); 
+			talloc_asprintf_addbuf(&string, ";");
 		}
 
 		oid_blob = data_blob_const(blob->ctr.dsdb.mappings[i].oid.binary_oid,
@@ -723,13 +723,10 @@ static int ldif_write_prefixMap(struct ldb_context *ldb, void *mem_ctx,
 				  blob->ctr.dsdb.mappings[i].id_prefix));
 			goto failed;
 		}
-		string = talloc_asprintf_append(string, "%u:%s", 
-						   blob->ctr.dsdb.mappings[i].id_prefix,
-						   partial_oid);
+		talloc_asprintf_addbuf(&string, "%u:%s",
+				       blob->ctr.dsdb.mappings[i].id_prefix,
+				       partial_oid);
 		talloc_free(discard_const(partial_oid));
-		if (string == NULL) {
-			goto failed;
-		}
 	}
 
 	talloc_free(blob);
@@ -750,7 +747,7 @@ static bool ldif_comparision_prefixMap_isString(const struct ldb_val *v)
 	if (IVAL(v->data, 0) == PREFIX_MAP_VERSION_DSDB) {
 		return false;
 	}
-	
+
 	return true;
 }
 
@@ -947,7 +944,7 @@ static int ldif_comparison_int64(struct ldb_context *ldb, void *mem_ctx,
 static int ldif_write_repsFromTo(struct ldb_context *ldb, void *mem_ctx,
 				 const struct ldb_val *in, struct ldb_val *out)
 {
-	return ldif_write_NDR(ldb, mem_ctx, in, out, 
+	return ldif_write_NDR(ldb, mem_ctx, in, out,
 			      sizeof(struct repsFromToBlob),
 			      (ndr_pull_flags_fn_t)ndr_pull_repsFromToBlob,
 			      (ndr_print_fn_t)ndr_print_repsFromToBlob,
@@ -960,7 +957,7 @@ static int ldif_write_repsFromTo(struct ldb_context *ldb, void *mem_ctx,
 static int ldif_write_replPropertyMetaData(struct ldb_context *ldb, void *mem_ctx,
 					   const struct ldb_val *in, struct ldb_val *out)
 {
-	return ldif_write_NDR(ldb, mem_ctx, in, out, 
+	return ldif_write_NDR(ldb, mem_ctx, in, out,
 			      sizeof(struct replPropertyMetaDataBlob),
 			      (ndr_pull_flags_fn_t)ndr_pull_replPropertyMetaDataBlob,
 			      (ndr_print_fn_t)ndr_print_replPropertyMetaDataBlob,
@@ -973,7 +970,7 @@ static int ldif_write_replPropertyMetaData(struct ldb_context *ldb, void *mem_ct
 static int ldif_write_replUpToDateVector(struct ldb_context *ldb, void *mem_ctx,
 					 const struct ldb_val *in, struct ldb_val *out)
 {
-	return ldif_write_NDR(ldb, mem_ctx, in, out, 
+	return ldif_write_NDR(ldb, mem_ctx, in, out,
 			      sizeof(struct replUpToDateVectorBlob),
 			      (ndr_pull_flags_fn_t)ndr_pull_replUpToDateVectorBlob,
 			      (ndr_print_fn_t)ndr_print_replUpToDateVectorBlob,
@@ -1314,7 +1311,7 @@ static int samba_syntax_operator_fn(struct ldb_context *ldb, enum ldb_parse_op o
 
 /*
   compare two binary objects.  This is correct for sorting as the sort order is:
-  
+
   a
   aa
   b
@@ -1326,7 +1323,7 @@ static int samba_syntax_operator_fn(struct ldb_context *ldb, enum ldb_parse_op o
   b
   aa
   bb
-  
+
 */
 static int samba_ldb_comparison_binary(struct ldb_context *ldb, void *mem_ctx,
 				       const struct ldb_val *v1, const struct ldb_val *v2)
@@ -1749,7 +1746,7 @@ const struct ldb_schema_syntax *ldb_samba_syntax_by_name(struct ldb_context *ldb
 {
 	unsigned int j;
 	const struct ldb_schema_syntax *s = NULL;
-	
+
 	for (j=0; j < ARRAY_SIZE(samba_syntaxes); j++) {
 		if (strcmp(name, samba_syntaxes[j].name) == 0) {
 			s = &samba_syntaxes[j];
@@ -1770,7 +1767,7 @@ const struct ldb_schema_syntax *ldb_samba_syntax_by_lDAPDisplayName(struct ldb_c
 			break;
 		}
 	}
-	
+
 	return s;
 }
 
diff --git a/lib/ldb/common/ldb_dn.c b/lib/ldb/common/ldb_dn.c
index bba41d0b2c6..601da57a1b1 100644
--- a/lib/ldb/common/ldb_dn.c
+++ b/lib/ldb/common/ldb_dn.c
@@ -877,21 +877,17 @@ char *ldb_dn_get_extended_linearized(TALLOC_CTX *mem_ctx, struct ldb_dn *dn, int
 					    (int)val.length,
 					    val.data);
 		} else {
-			p = talloc_asprintf_append_buffer(p, ";<%s=%.*s>",
-							  name,
-							  (int)val.length,
-							  val.data);
+			talloc_asprintf_addbuf(&p, ";<%s=%.*s>",
+					       name,
+					       (int)val.length,
+					       val.data);
 		}
 
 		talloc_free(val.data);
-
-		if (!p) {
-			return NULL;
-		}
 	}
 
 	if (dn->ext_comp_num && *linearized) {
-		p = talloc_asprintf_append_buffer(p, ";%s", linearized);
+		talloc_asprintf_addbuf(&p, ";%s", linearized);
 	}
 
 	if (!p) {
diff --git a/lib/ldb/common/ldb_modules.c b/lib/ldb/common/ldb_modules.c
index 2d0494a2123..53875ee216a 100644
--- a/lib/ldb/common/ldb_modules.c
+++ b/lib/ldb/common/ldb_modules.c
@@ -1193,13 +1193,8 @@ char *ldb_module_call_chain(struct ldb_request *req, TALLOC_CTX *mem_ctx)
 	}
 
 	while (req && req->handle) {
-		char *s = talloc_asprintf_append_buffer(ret, "req[%u] %p  : %s\n",
-							i++, req, ldb_req_location(req));
-		if (s == NULL) {
-			talloc_free(ret);
-			return NULL;
-		}
-		ret = s;
+		talloc_asprintf_addbuf(&ret, "req[%u] %p  : %s\n",
+				       i++, req, ldb_req_location(req));
 		req = req->handle->parent;
 	}
 	return ret;
diff --git a/lib/ldb/modules/rdn_name.c b/lib/ldb/modules/rdn_name.c
index 3cb62bf567b..a49ce621c1b 100644
--- a/lib/ldb/modules/rdn_name.c
+++ b/lib/ldb/modules/rdn_name.c
@@ -1,4 +1,4 @@
-/* 
+/*
    ldb database library
 
    Copyright (C) Andrew Bartlett 2005-2009
@@ -7,7 +7,7 @@
      ** NOTE! The following LGPL license applies to the ldb
      ** library. This does NOT imply that all of Samba is released
      ** under the LGPL
-   
+
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
@@ -116,7 +116,7 @@ static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
 	if (rdn_name == NULL) {
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
-	
+
 	rdn_val_p = ldb_dn_get_rdn_val(msg->dn);
 	if (rdn_val_p == NULL) {
 		return LDB_ERR_OPERATIONS_ERROR;
@@ -176,13 +176,13 @@ static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
 		}
 		if (i == attribute->num_values) {
 			char *rdn_errstring = talloc_asprintf(ac,
-				"RDN mismatch on %s: %s (%.*s) should match one of:", 
-				ldb_dn_get_linearized(msg->dn), rdn_name, 
+				"RDN mismatch on %s: %s (%.*s) should match one of:",
+				ldb_dn_get_linearized(msg->dn), rdn_name,
 				(int)rdn_val.length, (const char *)rdn_val.data);
 			for (i = 0; i < attribute->num_values; i++) {
-				rdn_errstring = talloc_asprintf_append(
-					rdn_errstring, " (%.*s)",
-					(int)attribute->values[i].length, 
+				talloc_asprintf_addbuf(
+					&rdn_errstring, " (%.*s)",
+					(int)attribute->values[i].length,
 					(const char *)attribute->values[i].data);
 			}
 			ldb_set_errstring(ldb, rdn_errstring);
diff --git a/lib/talloc/ABI/pytalloc-util-2.3.0.sigs b/lib/talloc/ABI/pytalloc-util-2.3.5.sigs
similarity index 100%
copy from lib/talloc/ABI/pytalloc-util-2.3.0.sigs
copy to lib/talloc/ABI/pytalloc-util-2.3.5.sigs
diff --git a/lib/talloc/ABI/talloc-2.1.11.sigs b/lib/talloc/ABI/talloc-2.3.5.sigs
similarity index 98%
copy from lib/talloc/ABI/talloc-2.1.11.sigs
copy to lib/talloc/ABI/talloc-2.3.5.sigs
index 9969ce33389..ec3cee44d8f 100644
--- a/lib/talloc/ABI/talloc-2.1.11.sigs
+++ b/lib/talloc/ABI/talloc-2.3.5.sigs
@@ -13,6 +13,7 @@ _talloc_steal_loc: void *(const void *, const void *, const char *)
 _talloc_zero: void *(const void *, size_t, const char *)
 _talloc_zero_array: void *(const void *, size_t, unsigned int, const char *)
 talloc_asprintf: char *(const void *, const char *, ...)
+talloc_asprintf_addbuf: void (char **, const char *, ...)
 talloc_asprintf_append: char *(char *, const char *, ...)
 talloc_asprintf_append_buffer: char *(char *, const char *, ...)
 talloc_autofree_context: void *(void)
diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c
index 29da190880a..0189fa03be0 100644
--- a/lib/talloc/talloc.c
+++ b/lib/talloc/talloc.c
@@ -2752,6 +2752,29 @@ _PUBLIC_ char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...)
 	return s;
 }
 
+_PUBLIC_ void talloc_asprintf_addbuf(char **ps, const char *fmt, ...)
+{
+	va_list ap;
+	char *s = *ps;
+	char *t = NULL;
+
+	if (s == NULL) {
+		return;
+	}
+
+	va_start(ap, fmt);
+	t = talloc_vasprintf_append_buffer(s, fmt, ap);
+	va_end(ap);
+
+	if (t == NULL) {
+		/* signal failure to the next caller */
+		TALLOC_FREE(s);
+		*ps = NULL;
+	} else {
+		*ps = t;
+	}
+}
+
 /*
   alloc an array, checking for integer overflow in the array size
 */
diff --git a/lib/talloc/talloc.h b/lib/talloc/talloc.h
index 06e81d7c999..dba9a3e9db9 100644
--- a/lib/talloc/talloc.h
+++ b/lib/talloc/talloc.h
@@ -1578,6 +1578,20 @@ _PUBLIC_ char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRI
  */
 _PUBLIC_ char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
+/**
+ * @brief Build up a string buffer, handle allocation failure
+ *
+ * @param[in] ps Pointer to the talloc'ed string to be extended
+ * @param[in] fmt The format string
+ * @param[in] ... The parameters used to fill fmt.
+ *
+ * This does nothing if *ps is NULL and sets *ps to NULL if the
+ * intermediate reallocation fails. Useful when building up a string
+ * step by step, no intermediate NULL checks are required.
+ */
+_PUBLIC_ void talloc_asprintf_addbuf(char **ps, const char *fmt, ...) \
+	PRINTF_ATTRIBUTE(2,3);
+
 /**
  * @brief Format a string.
  *
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 30896636404..5a9779cf2d8 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'talloc'
-VERSION = '2.3.4'
+VERSION = '2.3.5'
 
 import os
 import sys
diff --git a/lib/util/debug.c b/lib/util/debug.c
index 24d8281d27f..517157ef6a8 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -795,18 +795,15 @@ utility lists registered debug class names's
 
 char *debug_list_class_names_and_levels(void)
 {
-	char *buf = NULL;
+	char *buf = talloc_strdup(NULL, "");
 	size_t i;
 	/* prepare strings */
 	for (i = 0; i < debug_num_classes; i++) {
-		buf = talloc_asprintf_append(buf,
-					     "%s:%d%s",
-					     classname_table[i],
-					     dbgc_config[i].loglevel,
-					     i == (debug_num_classes - 1) ? "\n" : " ");
-		if (buf == NULL) {
-			return NULL;
-		}
+		talloc_asprintf_addbuf(&buf,
+				       "%s:%d%s",
+				       classname_table[i],
+				       dbgc_config[i].loglevel,
+				       i == (debug_num_classes - 1) ? "\n" : " ");
 	}
 	return buf;
 }
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 4762a7c523f..d8c8522616d 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -327,20 +327,6 @@ _PUBLIC_ bool conv_str_u64(const char * str, uint64_t * val);
  */
 _PUBLIC_ bool mem_equal_const_time(const void *s1, const void *s2, size_t n);
 
-/**
- * @brief Build up a string buffer, handle allocation failure
- *
- * @param[in] ps Pointer to the talloc'ed string to be extended
- * @param[in] fmt The format string
- * @param[in] ... The parameters used to fill fmt.
- *
- * This does nothing if *ps is NULL and sets *ps to NULL if the
- * intermediate reallocation fails. Useful when building up a string
- * step by step, no intermediate NULL checks are required.
- */
-
-_PUBLIC_ void talloc_asprintf_addbuf(char **ps, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
-
 /**
 Do a case-insensitive, whitespace-ignoring string compare.
 **/
diff --git a/lib/util/util_net.c b/lib/util/util_net.c


-- 
Samba Shared Repository



More information about the samba-cvs mailing list