svn commit: samba r20064 - in branches/SAMBA_4_0/source/librpc: idl ndr

metze at samba.org metze at samba.org
Thu Dec 7 15:24:24 GMT 2006


Author: metze
Date: 2006-12-07 15:24:23 +0000 (Thu, 07 Dec 2006)
New Revision: 20064

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

Log:
- fix pushing of DeReplicaObjectIdentifierX, this lets the DsAddEntry()
  request work correctly
- the error structures all have the same type

metze
Modified:
   branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
   branches/SAMBA_4_0/source/librpc/ndr/libndr.h
   branches/SAMBA_4_0/source/librpc/ndr/ndr_sec_helper.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2006-12-07 10:49:17 UTC (rev 20063)
+++ branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2006-12-07 15:24:23 UTC (rev 20064)
@@ -126,7 +126,7 @@
 	/* Function 0x02 */
 	typedef [public,gensize] struct {
 		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags)-4)] uint32 __ndr_size;
-		[value(ndr_size_dom_sid(&r->sid, ndr->flags))]  uint32 __ndr_size_sid;
+		[value(ndr_size_dom_sid28(&r->sid, ndr->flags))]  uint32 __ndr_size_sid;
 		GUID guid;
 		dom_sid28 sid;
 		[flag(STR_SIZE4|STR_CHARLEN|STR_CONFORMANT)] string dn;
@@ -454,7 +454,7 @@
 	/* DN String values */
 	typedef [public,gensize] struct {
 		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags))] uint32 __ndr_size;
-		[value(ndr_size_dom_sid(&r->sid,ndr->flags))]  uint32 __ndr_size_sid;
+		[value(ndr_size_dom_sid28(&r->sid,ndr->flags))]  uint32 __ndr_size_sid;
 		GUID guid;
 		dom_sid28 sid;
 		[flag(STR_SIZE4|STR_CHARLEN)] string dn;
@@ -1113,10 +1113,10 @@
 		[case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
 /*		[case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
 		[case(3)] drsuapi_DsAddEntryErrorInfo3 error3;
-*/		[case(4)] drsuapi_DsAddEntryErrorInfoX error4;
-		[case(5)] drsuapi_DsAddEntryErrorInfoX error5;
-		[case(6)] drsuapi_DsAddEntryErrorInfoX error6;
-		[case(7)] drsuapi_DsAddEntryErrorInfoX error7;
+*/		[case(4)] drsuapi_DsAddEntryErrorInfoX errorX;
+		[case(5)] drsuapi_DsAddEntryErrorInfoX errorX;
+		[case(6)] drsuapi_DsAddEntryErrorInfoX errorX;
+		[case(7)] drsuapi_DsAddEntryErrorInfoX errorX;
 	} drsuapi_DsAddEntryErrorInfo;
 
 	typedef struct {

Modified: branches/SAMBA_4_0/source/librpc/ndr/libndr.h
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/libndr.h	2006-12-07 10:49:17 UTC (rev 20063)
+++ branches/SAMBA_4_0/source/librpc/ndr/libndr.h	2006-12-07 15:24:23 UTC (rev 20064)
@@ -299,5 +299,6 @@
 NTSTATUS ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
 NTSTATUS ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
 void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
+size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
 
 #endif /* __LIBNDR_H__ */

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_sec_helper.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_sec_helper.c	2006-12-07 10:49:17 UTC (rev 20063)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_sec_helper.c	2006-12-07 15:24:23 UTC (rev 20064)
@@ -34,6 +34,21 @@
 	return 8 + 4*sid->num_auths;
 }
 
+size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags)
+{
+	struct dom_sid zero_sid;
+
+	if (!sid) return 0;
+
+	ZERO_STRUCT(zero_sid);
+
+	if (memcmp(&zero_sid, sid, sizeof(zero_sid)) == 0) {
+		return 0;
+	}
+
+	return 8 + 4*sid->num_auths;
+}
+
 /*
   return the wire size of a security_ace
 */



More information about the samba-cvs mailing list