r22590: Make TALLOC_ARRAY consistent across all uses.
authorJeremy Allison <jra@samba.org>
Mon, 30 Apr 2007 02:51:26 +0000 (02:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:19:49 +0000 (12:19 -0500)
That should be it....
Jeremy.
(This used to be commit 603233a98bbf65467c8b4f04719d771c70b3b4c9)

source3/lib/secace.c
source3/libads/dns.c
source3/libgpo/gpo_ldap.c
source3/libmsrpc/libmsrpc_internal.c
source3/nsswitch/idmap.c
source3/nsswitch/winbindd_ads.c
source3/registry/regfio.c
source3/smbd/msdfs.c
source3/utils/net_rpc_samsync.c

index d60722c57ee230ccca1e4a7e1425ac2e46540888..871c983533dbb37f9bb86f8bf687cf62082cb76c 100644 (file)
@@ -122,8 +122,12 @@ NTSTATUS sec_ace_del_sid(TALLOC_CTX *ctx, SEC_ACE **pp_new, SEC_ACE *old, uint32
 
        if (!ctx || !pp_new || !old || !sid || !num)  return NT_STATUS_INVALID_PARAMETER;
 
-       if((pp_new[0] = TALLOC_ZERO_ARRAY(ctx, SEC_ACE, *num )) == 0)
-               return NT_STATUS_NO_MEMORY;
+       if (*num) {
+               if((pp_new[0] = TALLOC_ZERO_ARRAY(ctx, SEC_ACE, *num )) == 0)
+                       return NT_STATUS_NO_MEMORY;
+       } else {
+               pp_new[0] = NULL;
+       }
 
        for (i = 0; i < *num; i ++) {
                if (sid_compare(&old[i].trustee, sid) != 0)
index 8b031b0e3a756563b8060d1d933855a41cffaaee..f16cea25554ed0e540e2af1786c5e1c560d74b8c 100644 (file)
@@ -355,10 +355,14 @@ static NTSTATUS ads_dns_lookup_srv( TALLOC_CTX *ctx, const char *name, struct dn
        DEBUG(4,("ads_dns_lookup_srv: %d records returned in the answer section.\n", 
                answer_count));
                
-       if ( (dcs = TALLOC_ZERO_ARRAY(ctx, struct dns_rr_srv, answer_count)) == NULL ) {
-               DEBUG(0,("ads_dns_lookup_srv: talloc() failure for %d char*'s\n", 
-                       answer_count));
-               return NT_STATUS_NO_MEMORY;
+       if (answer_count) {
+               if ( (dcs = TALLOC_ZERO_ARRAY(ctx, struct dns_rr_srv, answer_count)) == NULL ) {
+                       DEBUG(0,("ads_dns_lookup_srv: talloc() failure for %d char*'s\n", 
+                               answer_count));
+                       return NT_STATUS_NO_MEMORY;
+               }
+       } else {
+               dcs = NULL;
        }
 
        /* now skip the header */
index 13ec80f2ad2eb3c3fde11d0985c3afc1cf306f48..6c1079832d0f5b47a102685f048a57f5c7ebd207 100644 (file)
@@ -47,12 +47,17 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
 
        gp_ext->num_exts = i;
        
-       gp_ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
-       gp_ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
-       gp_ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
-       gp_ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
-
-       gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+       if (gp_ext->num_exts) {
+               gp_ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+               gp_ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+               gp_ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+               gp_ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+       } else {
+               gp_ext->extensions = NULL;
+               gp_ext->extensions_guid = NULL;
+               gp_ext->snapins = NULL;
+               gp_ext->snapins_guid = NULL;
+       }
 
        if (gp_ext->extensions == NULL || gp_ext->extensions_guid == NULL || 
            gp_ext->snapins == NULL || gp_ext->snapins_guid == NULL || 
@@ -60,6 +65,8 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
                goto parse_error;
        }
 
+       gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+
        for (i = 0; ext_list[i] != NULL; i++) {
 
                int k;
@@ -161,8 +168,13 @@ ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
        gp_link->gp_opts = options;
        gp_link->num_links = i;
        
-       gp_link->link_names = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_link->num_links);
-       gp_link->link_opts = TALLOC_ZERO_ARRAY(mem_ctx, uint32, gp_link->num_links);
+       if (gp_link->num_links) {
+               gp_link->link_names = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_link->num_links);
+               gp_link->link_opts = TALLOC_ZERO_ARRAY(mem_ctx, uint32, gp_link->num_links);
+       } else {
+               gp_link->link_names = NULL;
+               gp_link->link_opts = NULL;
+       }
        
        gp_link->gp_link = talloc_strdup(mem_ctx, gp_link_raw);
 
index 3cb702e376759bd422ff123d1e7d684bcfafe1f4..a06915b72c703ed52ca3c380da62dd4dbdcb8dd7 100644 (file)
@@ -713,9 +713,13 @@ CacService *cac_MakeServiceArray( TALLOC_CTX * mem_ctx,
        if ( !mem_ctx || !svc )
                return NULL;
 
-       services = TALLOC_ZERO_ARRAY( mem_ctx, CacService, num_services );
-       if ( !services )
-               return NULL;
+       if (num_services) {
+               services = TALLOC_ZERO_ARRAY( mem_ctx, CacService, num_services );
+               if ( !services )
+                       return NULL;
+       } else {
+               services = NULL;
+       }
 
        for ( i = 0; i < num_services; i++ ) {
                services[i].service_name =
index 26fcc692e9e95a5976e0d41449fdf724c906e326..5222eba8f36b5eabb2811d9ff26a515c80238afd 100644 (file)
@@ -1026,9 +1026,15 @@ static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
 
        /* split list per domain */
 
-       dom_ids = TALLOC_ZERO_ARRAY(ctx, struct id_map **, num_domains);
-       IDMAP_CHECK_ALLOC(dom_ids);
-       counters = TALLOC_ZERO_ARRAY(ctx, int, num_domains);
+       if (num_domains) {
+               dom_ids = TALLOC_ZERO_ARRAY(ctx, struct id_map **, num_domains);
+               IDMAP_CHECK_ALLOC(dom_ids);
+               counters = TALLOC_ZERO_ARRAY(ctx, int, num_domains);
+               IDMAP_CHECK_ALLOC(counters);
+       } else {
+               dom_ids = NULL;
+               counters = NULL;
+       }
 
        /* partition the requests by domain */
 
index 01174edf37ee99f88461be241fd5b09aeb2a7f41..355a09385574d8ef9f046a0c55c10d54705978b9 100644 (file)
@@ -907,16 +907,21 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
           the problem is that the members are in the form of distinguised names
        */
 
-       (*sid_mem) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members);
-       (*name_types) = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_members);
-       (*names) = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_members);
-
-       if ((num_members != 0) &&
-           ((members == NULL) || (*sid_mem == NULL) ||
-            (*name_types == NULL) || (*names == NULL))) {
-               DEBUG(1, ("talloc failed\n"));
-               status = NT_STATUS_NO_MEMORY;
-               goto done;
+       if (num_members) {
+               (*sid_mem) = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members);
+               (*name_types) = TALLOC_ZERO_ARRAY(mem_ctx, uint32, num_members);
+               (*names) = TALLOC_ZERO_ARRAY(mem_ctx, char *, num_members);
+
+               if ((members == NULL) || (*sid_mem == NULL) ||
+                    (*name_types == NULL) || (*names == NULL)) {
+                       DEBUG(1, ("talloc failed\n"));
+                       status = NT_STATUS_NO_MEMORY;
+                       goto done;
+               }
+       } else {
+               (*sid_mem) = NULL;
+               (*name_types) = NULL;
+               (*names) = NULL;
        }
  
        for (i=0;i<num_members;i++) {
index f7ea58f8a35635743caab293f05c782323d11765..3a554177a4c48a3d2bfe2a4db1bd6022fc39edb2 100644 (file)
@@ -1823,8 +1823,12 @@ static int hashrec_cmp( REGF_HASH_REC *h1, REGF_HASH_REC *h2 )
                memcpy( nk->subkeys.header, "lf", REC_HDR_SIZE );
                
                nk->subkeys.num_keys = nk->num_subkeys;
-               if ( !(nk->subkeys.hashes = TALLOC_ZERO_ARRAY( file->mem_ctx, REGF_HASH_REC, nk->subkeys.num_keys )) )
-                       return NULL;
+               if (nk->subkeys.num_keys) {
+                       if ( !(nk->subkeys.hashes = TALLOC_ZERO_ARRAY( file->mem_ctx, REGF_HASH_REC, nk->subkeys.num_keys )) )
+                               return NULL;
+               } else {
+                       nk->subkeys.hashes = NULL;
+               }
                nk->subkey_index = 0;
 
                /* update the max_bytes_subkey{name,classname} fields */
index effe868657e6e7e8894496a4d83809bef2cd3fae..9f203bfd1909df3b6ad0a12eceff6d1d1da569dc 100644 (file)
@@ -264,10 +264,14 @@ static BOOL parse_msdfs_symlink(TALLOC_CTX *ctx,
 
        DEBUG(10,("parse_msdfs_symlink: count=%d\n", count));
 
-       reflist = *preflist = TALLOC_ZERO_ARRAY(ctx, struct referral, count);
-       if(reflist == NULL) {
-               DEBUG(0,("parse_msdfs_symlink: talloc failed!\n"));
-               return False;
+       if (count) {
+               reflist = *preflist = TALLOC_ZERO_ARRAY(ctx, struct referral, count);
+               if(reflist == NULL) {
+                       DEBUG(0,("parse_msdfs_symlink: talloc failed!\n"));
+                       return False;
+               }
+       } else {
+               reflist = *preflist = NULL;
        }
        
        for(i=0;i<count;i++) {
index 3e19a12ac521a8b3d0a288e85b4c4ac53829776a..d8ddff20bc643723fbc3b77b43a522cc34eeaaae 100644 (file)
@@ -670,10 +670,14 @@ static NTSTATUS fetch_group_mem_info(uint32 rid, SAM_GROUP_MEM_INFO *delta)
                return NT_STATUS_NO_MEMORY;
        }
 
-       if ((nt_members = TALLOC_ZERO_ARRAY(t, char *, delta->num_members)) == NULL) {
-               DEBUG(0, ("talloc failed\n"));
-               talloc_free(t);
-               return NT_STATUS_NO_MEMORY;
+       if (delta->num_members) {
+               if ((nt_members = TALLOC_ZERO_ARRAY(t, char *, delta->num_members)) == NULL) {
+                       DEBUG(0, ("talloc failed\n"));
+                       talloc_free(t);
+                       return NT_STATUS_NO_MEMORY;
+               }
+       } else {
+               nt_members = NULL;
        }
 
        for (i=0; i<delta->num_members; i++) {