svn commit: samba r6399 - in trunk/source: include rpc_client rpc_parse

jerry at samba.org jerry at samba.org
Wed Apr 20 03:43:48 GMT 2005


Author: jerry
Date: 2005-04-20 03:43:48 +0000 (Wed, 20 Apr 2005)
New Revision: 6399

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

Log:
more registry rpc cleanups for RegEnumVal()
Modified:
   trunk/source/include/rpc_reg.h
   trunk/source/rpc_client/cli_reg.c
   trunk/source/rpc_parse/parse_misc.c
   trunk/source/rpc_parse/parse_reg.c


Changeset:
Modified: trunk/source/include/rpc_reg.h
===================================================================
--- trunk/source/include/rpc_reg.h	2005-04-20 02:59:37 UTC (rev 6398)
+++ trunk/source/include/rpc_reg.h	2005-04-20 03:43:48 UTC (rev 6399)
@@ -377,15 +377,15 @@
 typedef struct {
 	POLICY_HND pol; 
 	uint32 key_index;       
-	uint16 key_name_len;    /* 0x0000 */
+	uint16 key_name_len;   
 	uint16 unknown_1;       /* 0x0414 */
-	uint32 ptr1;            /* pointer */
+	uint32 ptr1;          
 	uint32 unknown_2;       /* 0x0000 020A */
-	uint8  pad1[8];         /* padding - zeros */
-	uint32 ptr2;            /* pointer */
-	uint8  pad2[8];         /* padding - zeros */
-	uint32 ptr3;            /* pointer */
-	NTTIME time;            /* current time? */
+	uint8  pad1[8];        
+	uint32 ptr2;           
+	uint8  pad2[8];        
+	uint32 ptr3;           
+	NTTIME time;           
 } REG_Q_ENUM_KEY;
 
 typedef struct { 
@@ -395,15 +395,10 @@
 	uint32 ptr1;            /* pointer */
 	uint32 unknown_2;       /* 0x0000 020A */
 	uint32 unknown_3;       /* 0x0000 0000 */
-
 	UNISTR3 key_name;
 
-	uint32 ptr2;            /* pointer */
-	uint8  pad2[8];         /* padding - zeros */
-
-	uint32 ptr3;            /* pointer */
-	NTTIME time;            /* current time? */
-
+	UNISTR4 *class_name;
+	NTTIME *time;            
 	WERROR status;         /* return status */
 } REG_R_ENUM_KEY;
 

Modified: trunk/source/rpc_client/cli_reg.c
===================================================================
--- trunk/source/rpc_client/cli_reg.c	2005-04-20 02:59:37 UTC (rev 6398)
+++ trunk/source/rpc_client/cli_reg.c	2005-04-20 03:43:48 UTC (rev 6399)
@@ -508,7 +508,7 @@
 	unistr3_to_ascii( key_name, &out.key_name, sizeof(fstring)-1 );
 	*unk_1      = out.unknown_1;
 	*unk_2      = out.unknown_2;
-	*mod_time   = nt_time_to_unix(&out.time);
+	*mod_time   = nt_time_to_unix(out.time);
 
 	return out.status;
 }

Modified: trunk/source/rpc_parse/parse_misc.c
===================================================================
--- trunk/source/rpc_parse/parse_misc.c	2005-04-20 02:59:37 UTC (rev 6398)
+++ trunk/source/rpc_parse/parse_misc.c	2005-04-20 03:43:48 UTC (rev 6399)
@@ -133,6 +133,15 @@
 }
 
 /*******************************************************************
+ Reads or writes an NTTIME structure.
+********************************************************************/
+
+BOOL smb_io_nttime(const char *desc, prs_struct *ps, int depth, NTTIME *nttime)
+{
+	return smb_io_time( desc, nttime, ps, depth );
+}
+
+/*******************************************************************
  Gets an enumeration handle from an ENUM_HND structure.
 ********************************************************************/
 
@@ -1731,6 +1740,11 @@
 	
 	if(!prs_uint32("uni_str_len", ps, depth, &name->uni_str_len))
 		return False;
+		
+	/* we're done if there is no string */
+	
+	if ( name->uni_str_len == 0 )
+		return True;
 
 	/* don't know if len is specified by uni_str_len member... */
 	/* assume unicode string is unicode-null-terminated, instead */
@@ -1741,7 +1755,16 @@
 	return True;
 }
 
+/*******************************************************************
+ Reads or writes a UNISTR3 structure.
+********************************************************************/
 
+BOOL prs_io_unistr3(const char *desc, prs_struct *ps, int depth, UNISTR3 *name)
+{
+	return smb_io_unistr3( desc, name, ps, depth );
+}
+
+
 /*******************************************************************
  Stream a uint64_struct
  ********************************************************************/

Modified: trunk/source/rpc_parse/parse_reg.c
===================================================================
--- trunk/source/rpc_parse/parse_reg.c	2005-04-20 02:59:37 UTC (rev 6398)
+++ trunk/source/rpc_parse/parse_reg.c	2005-04-20 03:43:48 UTC (rev 6399)
@@ -1318,8 +1318,8 @@
 		r_u->ptr1 = 0x1;
 	init_unistr3( &r_u->key_name, subkey );
 	
-	r_u->ptr2 = 0x1;
-	r_u->ptr3 = 0x1;
+	r_u->class_name = TALLOC_ZERO_P( get_talloc_ctx(), UNISTR4 );
+	r_u->time       = TALLOC_ZERO_P( get_talloc_ctx(), NTTIME );
 }
 
 /*******************************************************************
@@ -1406,26 +1406,20 @@
 			return False;
 		if(!smb_io_unistr3("key_name", &q_u->key_name, ps, depth))
 			return False;
-		if(!prs_align(ps))
-			return False;
 	}
 
-	if(!prs_uint32("ptr2", ps, depth, &q_u->ptr2))
+	if(!prs_align(ps))
 		return False;
+	if (!prs_pointer("class", ps, depth, (void**)&q_u->class_name, sizeof(UNISTR4), (PRS_POINTER_CAST)prs_unistr4))
+		return False;
 
-	if (q_u->ptr2 != 0) {
-		if(!prs_uint8s(False, "pad2", ps, depth, q_u->pad2, sizeof(q_u->pad2)))
-			return False;
-	}
-
-	if(!prs_uint32("ptr3", ps, depth, &q_u->ptr3))
+	if(!prs_align(ps))
 		return False;
+	if (!prs_pointer("time", ps, depth, (void**)&q_u->time, sizeof(NTTIME), (PRS_POINTER_CAST)smb_io_nttime))
+		return False;
 
-	if (q_u->ptr3 != 0) {
-		if(!smb_io_time("", &q_u->time, ps, depth))
-			return False;
-	}
-
+	if(!prs_align(ps))
+		return False;
 	if(!prs_werror("status", ps, depth, &q_u->status))
 		return False;
 



More information about the samba-cvs mailing list