svn commit: samba r18367 - in branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules: .

abartlet at samba.org abartlet at samba.org
Mon Sep 11 07:50:49 GMT 2006


Author: abartlet
Date: 2006-09-11 07:50:49 +0000 (Mon, 11 Sep 2006)
New Revision: 18367

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

Log:
When converting to entryUUID, ensure we don't double-convert a
string-format GUID.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/entryUUID.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/entryUUID.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/entryUUID.c	2006-09-11 07:15:49 UTC (rev 18366)
+++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/entryUUID.c	2006-09-11 07:50:49 UTC (rev 18367)
@@ -58,24 +58,27 @@
 	return out;
 }
 
-static struct ldb_val decode_guid(struct ldb_module *module, TALLOC_CTX *ctx, const struct ldb_val *val)
+static struct ldb_val guid_always_string(struct ldb_module *module, TALLOC_CTX *ctx, const struct ldb_val *val)
 {
 	struct GUID *guid;
 	NTSTATUS status;
 	struct ldb_val out = data_blob(NULL, 0);
-	
-	guid = talloc(ctx, struct GUID);
-	if (guid == NULL) {
-		return out;
-	}
-	status = ndr_pull_struct_blob(val, guid, guid, 
-				      (ndr_pull_flags_fn_t)ndr_pull_GUID);
-	if (!NT_STATUS_IS_OK(status)) {
+	if (val->length >= 32 && val->data[val->length] == '\0') {
+		ldb_handler_copy(module->ldb, ctx, val, &out);
+	} else {
+		guid = talloc(ctx, struct GUID);
+		if (guid == NULL) {
+			return out;
+		}
+		status = ndr_pull_struct_blob(val, guid, guid, 
+					      (ndr_pull_flags_fn_t)ndr_pull_GUID);
+		if (!NT_STATUS_IS_OK(status)) {
+			talloc_free(guid);
+			return out;
+		}
+		out = data_blob_string_const(GUID_string(ctx, guid));
 		talloc_free(guid);
-		return out;
 	}
-	out = data_blob_string_const(GUID_string(ctx, guid));
-	talloc_free(guid);
 	return out;
 }
 
@@ -179,7 +182,7 @@
 		.u = {
 			.convert = {
 				.remote_name = "entryUUID", 
-				.convert_local = decode_guid,
+				.convert_local = guid_always_string,
 				.convert_remote = encode_guid,
 			},
 		},



More information about the samba-cvs mailing list