svn commit: samba r22673 - in branches: SAMBA_3_0/source/rpc_parse SAMBA_3_0_25/source/rpc_parse SAMBA_3_0_26/source/rpc_parse

jra at samba.org jra at samba.org
Fri May 4 19:14:53 GMT 2007


Author: jra
Date: 2007-05-04 19:14:51 +0000 (Fri, 04 May 2007)
New Revision: 22673

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

Log:
Fix for Jerry's reversion. We still need to check size
before talloc.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/rpc_parse/parse_samr.c
   branches/SAMBA_3_0_25/source/rpc_parse/parse_samr.c
   branches/SAMBA_3_0_26/source/rpc_parse/parse_samr.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpc_parse/parse_samr.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_parse/parse_samr.c	2007-05-04 18:59:51 UTC (rev 22672)
+++ branches/SAMBA_3_0/source/rpc_parse/parse_samr.c	2007-05-04 19:14:51 UTC (rev 22673)
@@ -4838,9 +4838,14 @@
 		if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
 			return False;
 
-		ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
-		if (!ptr_sid) {
-			return False;
+		/* We must always use talloc here even when marshalling. */
+		if (r_u->num_sids1) {
+			ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
+			if (!ptr_sid) {
+				return False;
+			}
+		} else {
+			ptr_sid = NULL;
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {
@@ -4850,7 +4855,14 @@
 		}
 		
 		if (UNMARSHALLING(ps)) {
-			r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+			if (r_u->num_sids1) {
+				r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+				if (!r_u->sid) {
+					return False;
+				}
+			} else {
+				r_u->sid = NULL;
+			}
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {

Modified: branches/SAMBA_3_0_25/source/rpc_parse/parse_samr.c
===================================================================
--- branches/SAMBA_3_0_25/source/rpc_parse/parse_samr.c	2007-05-04 18:59:51 UTC (rev 22672)
+++ branches/SAMBA_3_0_25/source/rpc_parse/parse_samr.c	2007-05-04 19:14:51 UTC (rev 22673)
@@ -4768,9 +4768,14 @@
 		if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
 			return False;
 
-		ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
-		if (!ptr_sid) {
-			return False;
+		/* We must always use talloc here even when marshalling. */
+		if (r_u->num_sids1) {
+			ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
+			if (!ptr_sid) {
+				return False;
+			}
+		} else {
+			ptr_sid = NULL;
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {
@@ -4780,7 +4785,14 @@
 		}
 		
 		if (UNMARSHALLING(ps)) {
-			r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+			if (r_u->num_sids1) {
+				r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+				if (!r_u->sid) {
+					return False;
+				}
+			} else {
+				r_u->sid = NULL;
+			}
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {

Modified: branches/SAMBA_3_0_26/source/rpc_parse/parse_samr.c
===================================================================
--- branches/SAMBA_3_0_26/source/rpc_parse/parse_samr.c	2007-05-04 18:59:51 UTC (rev 22672)
+++ branches/SAMBA_3_0_26/source/rpc_parse/parse_samr.c	2007-05-04 19:14:51 UTC (rev 22673)
@@ -4768,9 +4768,14 @@
 		if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
 			return False;
 
-		ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
-		if (!ptr_sid) {
-			return False;
+		/* We must always use talloc here even when marshalling. */
+		if (r_u->num_sids1) {
+			ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
+			if (!ptr_sid) {
+				return False;
+			}
+		} else {
+			ptr_sid = NULL;
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {
@@ -4780,7 +4785,14 @@
 		}
 		
 		if (UNMARSHALLING(ps)) {
-			r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+			if (r_u->num_sids1) {
+				r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+				if (!r_u->sid) {
+					return False;
+				}
+			} else {
+				r_u->sid = NULL;
+			}
 		}
 		
 		for (i = 0; i < r_u->num_sids1; i++) {



More information about the samba-cvs mailing list