svn commit: samba r19290 - in branches/SAMBA_3_0/source/librpc: gen_ndr idl

vlendec at samba.org vlendec at samba.org
Sun Oct 15 14:47:25 GMT 2006


Author: vlendec
Date: 2006-10-15 14:47:25 +0000 (Sun, 15 Oct 2006)
New Revision: 19290

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

Log:
regedit running on nt4 will cut off the last character from a enumkey without
this patch. Jerry, Jelmer, can you please check this?

Thanks,

Volker

Modified:
   branches/SAMBA_3_0/source/librpc/gen_ndr/ndr_winreg.c
   branches/SAMBA_3_0/source/librpc/gen_ndr/winreg.h
   branches/SAMBA_3_0/source/librpc/idl/winreg.idl


Changeset:
Modified: branches/SAMBA_3_0/source/librpc/gen_ndr/ndr_winreg.c
===================================================================
--- branches/SAMBA_3_0/source/librpc/gen_ndr/ndr_winreg.c	2006-10-15 10:11:15 UTC (rev 19289)
+++ branches/SAMBA_3_0/source/librpc/gen_ndr/ndr_winreg.c	2006-10-15 14:47:25 UTC (rev 19290)
@@ -268,7 +268,7 @@
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m(r->name)*2));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name)*2));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
 		NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
 	}
@@ -276,8 +276,8 @@
 		if (r->name) {
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size/2));
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->name)*2/2));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m(r->name)*2/2, sizeof(uint16_t), CH_UTF16));
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name)*2/2));
+			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term(r->name)*2/2, sizeof(uint16_t), CH_UTF16));
 		}
 	}
 	return NT_STATUS_OK;
@@ -324,7 +324,7 @@
 {
 	ndr_print_struct(ndr, name, "winreg_StringBuf");
 	ndr->depth++;
-	ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->name)*2:r->length);
+	ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name)*2:r->length);
 	ndr_print_uint16(ndr, "size", r->size);
 	ndr_print_ptr(ndr, "name", r->name);
 	ndr->depth++;

Modified: branches/SAMBA_3_0/source/librpc/gen_ndr/winreg.h
===================================================================
--- branches/SAMBA_3_0/source/librpc/gen_ndr/winreg.h	2006-10-15 10:11:15 UTC (rev 19289)
+++ branches/SAMBA_3_0/source/librpc/gen_ndr/winreg.h	2006-10-15 14:47:25 UTC (rev 19290)
@@ -48,7 +48,7 @@
 };
 
 struct winreg_StringBuf {
-	uint16_t length;/* [value(strlen_m(name)*2)] */
+	uint16_t length;/* [value(strlen_m_term(name)*2)] */
 	uint16_t size;
 	const char *name;/* [unique,length_is(length/2),charset(UTF16),size_is(size/2)] */
 };

Modified: branches/SAMBA_3_0/source/librpc/idl/winreg.idl
===================================================================
--- branches/SAMBA_3_0/source/librpc/idl/winreg.idl	2006-10-15 10:11:15 UTC (rev 19289)
+++ branches/SAMBA_3_0/source/librpc/idl/winreg.idl	2006-10-15 14:47:25 UTC (rev 19290)
@@ -131,7 +131,7 @@
 	);
 
 	typedef struct {
-		[value(strlen_m(name)*2)] uint16 length; 
+		[value(strlen_m_term(name)*2)] uint16 length; 
 		/* size cannot be auto-set by value() as it is the
 		   amount of space the server is allowed to use for this
 		   string in the reply, not its current size */



More information about the samba-cvs mailing list