Author: mimir
Date: 2007-05-08 22:04:28 +0000 (Tue, 08 May 2007)
New Revision: 22763

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

Log:
replace talloc_zero calls with composite_create and add more
allocation checks.


rafal


Modified:
   branches/SAMBA_4_0/source/libnet/userinfo.c
   branches/SAMBA_4_0/source/libnet/userman.c


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/userinfo.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/userinfo.c 2007-05-08 21:17:58 UTC (rev 
22762)
+++ branches/SAMBA_4_0/source/libnet/userinfo.c 2007-05-08 22:04:28 UTC (rev 
22763)
@@ -262,24 +262,22 @@
 
        if (!p || !io) return NULL;
        
-       c = talloc_zero(p, struct composite_context);
-       if (c == NULL) goto failure;
+       c = composite_create(p, dcerpc_event_context(p));
+       if (c == NULL) return c;
        
        s = talloc_zero(c, struct userinfo_state);
-       if (s == NULL) goto failure;
+       if (composite_nomem(s, c)) return c;
 
+       c->private_data = s;
+
        s->level         = io->in.level;
        s->pipe          = p;
        s->domain_handle = io->in.domain_handle;
        s->monitor_fn    = monitor;
 
-       c->state        = COMPOSITE_STATE_IN_PROGRESS;
-       c->private_data = s;
-       c->event_ctx    = dcerpc_event_context(p);
-
        if (io->in.sid) {
                sid = dom_sid_parse_talloc(s, io->in.sid);
-               if (sid == NULL) goto failure;  
+               if (composite_nomem(sid, c)) return c;
 
                s->openuser.in.domain_handle  = &s->domain_handle;
                s->openuser.in.access_mask    = SEC_FLAG_MAXIMUM_ALLOWED;
@@ -288,7 +286,7 @@
                
                /* send request */
                s->req = dcerpc_samr_OpenUser_send(p, c, &s->openuser);
-               if (s->req == NULL) goto failure;
+               if (composite_nomem(s->req, c)) return c;
                
                s->stage = USERINFO_OPENUSER;
 
@@ -303,7 +301,7 @@
                
                /* send request */
                s->req = dcerpc_samr_LookupNames_send(p, c, &s->lookup);
-               if (s->req == NULL) goto failure;
+               if (composite_nomem(s->req, c)) return c;
                
                s->stage = USERINFO_LOOKUP;
        }
@@ -313,10 +311,6 @@
        s->req->async.private = c;
 
        return c;
-       
-failure:
-       talloc_free(c);
-       return NULL;
 }
 
 

Modified: branches/SAMBA_4_0/source/libnet/userman.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/userman.c  2007-05-08 21:17:58 UTC (rev 
22762)
+++ branches/SAMBA_4_0/source/libnet/userman.c  2007-05-08 22:04:28 UTC (rev 
22763)
@@ -127,16 +127,16 @@
        struct composite_context *c;
        struct useradd_state *s;
 
+       if (!p || !io) return NULL;
+
        /* composite allocation and setup */
-       c = talloc_zero(p, struct composite_context);
+       c = composite_create(p, dcerpc_event_context(p));
        if (c == NULL) return NULL;
        
        s = talloc_zero(c, struct useradd_state);
        if (composite_nomem(s, c)) return c;
        
-       c->state        = COMPOSITE_STATE_IN_PROGRESS;
        c->private_data = s;
-       c->event_ctx    = dcerpc_event_context(p);
 
        /* put passed arguments to the state structure */
        s->domain_handle = io->in.domain_handle;
@@ -145,8 +145,13 @@
        
        /* preparing parameters to send rpc request */
        s->createuser.in.domain_handle         = &io->in.domain_handle;
+
        s->createuser.in.account_name          = talloc_zero(c, struct 
lsa_String);
+       if (composite_nomem(s->createuser.in.account_name, c)) return c;
+
        s->createuser.in.account_name->string  = talloc_strdup(c, 
io->in.username);
+       if (composite_nomem(s->createuser.in.account_name->string, c)) return c;
+
        s->createuser.out.user_handle          = &s->user_handle;
        s->createuser.out.rid                  = &s->user_rid;
 

Reply via email to