svn commit: samba r19284 - in branches/SAMBA_4_0_RELEASE/source/libnet: .

abartlet at samba.org abartlet at samba.org
Sat Oct 14 21:42:17 GMT 2006


Author: abartlet
Date: 2006-10-14 21:42:17 +0000 (Sat, 14 Oct 2006)
New Revision: 19284

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19284

Log:
Avoid segfaulting if the user doesn't exist locally already (msgs was
null).

Andrew Bartlett

Modified:
   branches/SAMBA_4_0_RELEASE/source/libnet/libnet_samsync_ldb.c


Changeset:
Modified: branches/SAMBA_4_0_RELEASE/source/libnet/libnet_samsync_ldb.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/libnet/libnet_samsync_ldb.c	2006-10-14 21:40:06 UTC (rev 19283)
+++ branches/SAMBA_4_0_RELEASE/source/libnet/libnet_samsync_ldb.c	2006-10-14 21:42:17 UTC (rev 19284)
@@ -427,14 +427,21 @@
 		if (ret != 0) {
 			struct ldb_dn *first_try_dn = msg->dn;
 			/* Try again with the default DN */
-			msg->dn = talloc_steal(msg, msgs[0]->dn);
-			ret = samdb_add(state->sam_ldb, mem_ctx, msg);
-			if (ret != 0) {
-				*error_string = talloc_asprintf(mem_ctx, "Failed to create user record.  Tried both %s and %s: %s",
+			if (!remote_msgs) {
+				*error_string = talloc_asprintf(mem_ctx, "Failed to create user record.  Tried %s: %s",
 								ldb_dn_linearize(mem_ctx, first_try_dn),
-								ldb_dn_linearize(mem_ctx, msg->dn),
 								ldb_errstring(state->sam_ldb));
 				return NT_STATUS_INTERNAL_DB_CORRUPTION;
+			} else {
+				msg->dn = talloc_steal(msg, remote_msgs[0]->dn);
+				ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+				if (ret != 0) {
+					*error_string = talloc_asprintf(mem_ctx, "Failed to create user record.  Tried both %s and %s: %s",
+									ldb_dn_linearize(mem_ctx, first_try_dn),
+									ldb_dn_linearize(mem_ctx, msg->dn),
+									ldb_errstring(state->sam_ldb));
+					return NT_STATUS_INTERNAL_DB_CORRUPTION;
+				}
 			}
 		}
 	} else {



More information about the samba-cvs mailing list