[SCM] Samba Shared Repository - branch v3-4-test updated

Karolin Seeger kseeger at samba.org
Thu Jul 8 03:02:45 MDT 2010


The branch, v3-4-test has been updated
       via  82d609c... librpc: split out a separate GUID_from_ndr_blob() function
      from  1b22e94... s3: Fix bug 7336: Enable idmap_passdb module build as shared (cherry picked from commit 8c0fbc410798512b7a4b7db73bcb24cde6fa7849) (cherry picked from commit b4803af11525823ea508d0ca4e58402d55901194)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit 82d609cefbb6177738fd78ca017d4196b80a0718
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Dec 10 11:22:20 2009 +1100

    librpc: split out a separate GUID_from_ndr_blob() function
    
    This will simplify many of the places that deal with NDR formatted
    GUIDs
    (cherry picked from commit effff544265c63c95cf630d426b630bfe4d25aec)
    
    This patch is part of a fix for bug #7538 (Backport fixes for
    GUID_from_data_blob).
    (cherry picked from commit e8ed2b596627e8704e3384d5997020059b47144a)

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

Summary of changes:
 librpc/ndr/libndr.h |    1 +
 librpc/ndr/uuid.c   |   35 ++++++++++++++++++++---------------
 2 files changed, 21 insertions(+), 15 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index f730ed8..e1bcdb9 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -522,6 +522,7 @@ enum ndr_err_code ndr_push_charset(struct ndr_push *ndr, int ndr_flags, const ch
 
 /* GUIDs */
 bool GUID_equal(const struct GUID *u1, const struct GUID *u2);
+NTSTATUS GUID_from_ndr_blob(const DATA_BLOB *b, struct GUID *guid);
 NTSTATUS GUID_from_data_blob(const DATA_BLOB *s, struct GUID *guid);
 NTSTATUS GUID_from_string(const char *s, struct GUID *guid);
 NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid);
diff --git a/librpc/ndr/uuid.c b/librpc/ndr/uuid.c
index 80c35cd..9289712 100644
--- a/librpc/ndr/uuid.c
+++ b/librpc/ndr/uuid.c
@@ -25,6 +25,25 @@
 #include "librpc/ndr/libndr.h"
 #include "librpc/gen_ndr/ndr_misc.h"
 
+
+/**
+  build a GUID from a NDR data blob
+*/
+_PUBLIC_ NTSTATUS GUID_from_ndr_blob(const DATA_BLOB *b, struct GUID *guid)
+{
+	enum ndr_err_code ndr_err;
+	TALLOC_CTX *mem_ctx;
+
+	mem_ctx = talloc_new(NULL);
+	NT_STATUS_HAVE_NO_MEMORY(mem_ctx);
+
+	ndr_err = ndr_pull_struct_blob_all(b, mem_ctx, NULL, guid,
+					   (ndr_pull_flags_fn_t)ndr_pull_GUID);
+	talloc_free(mem_ctx);
+	return ndr_map_error2ntstatus(ndr_err);
+}
+
+
 /**
   build a GUID from a string
 */
@@ -90,21 +109,7 @@ _PUBLIC_ NTSTATUS GUID_from_data_blob(const DATA_BLOB *s, struct GUID *guid)
 	}
 
 	if (s->length == 16) {
-		enum ndr_err_code ndr_err;
-		struct GUID guid2;
-		TALLOC_CTX *mem_ctx;
-
-		mem_ctx = talloc_new(NULL);
-		NT_STATUS_HAVE_NO_MEMORY(mem_ctx);
-
-		ndr_err = ndr_pull_struct_blob(s, mem_ctx, NULL, &guid2,
-					       (ndr_pull_flags_fn_t)ndr_pull_GUID);
-		talloc_free(mem_ctx);
-		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-			return ndr_map_error2ntstatus(ndr_err);
-		}
-		*guid = guid2;
-		return NT_STATUS_OK;
+		return GUID_from_ndr_blob(s, guid);
 	}
 
 	if (!NT_STATUS_IS_OK(status)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list