fix some possible memleaks and not tested reallocs spotted by Andreas Moroder
authorSimo Sorce <idra@samba.org>
Wed, 3 Oct 2001 21:10:29 +0000 (21:10 +0000)
committerSimo Sorce <idra@samba.org>
Wed, 3 Oct 2001 21:10:29 +0000 (21:10 +0000)
source/nsswitch/winbindd_group.c
source/rpc_server/srv_lsa_nt.c
source/utils/rpccheck.c

index 2b567f13362c3812bdbaa2d0c0896d675b1d9eee..ab693eff6332ed8490eeb1eb5f38ca6e0d470c82 100644 (file)
@@ -467,7 +467,7 @@ static BOOL get_sam_group_entries(struct getent_state *ent)
 {
        NTSTATUS status;
        uint32 num_entries;
-       struct acct_info *name_list = NULL;
+       struct acct_info *name_list = NULL, *tnl;
         
        if (ent->got_all_sam_entries) {
                return False;
@@ -510,10 +510,17 @@ static BOOL get_sam_group_entries(struct getent_state *ent)
 
                if (num_entries) {
 
-                       name_list = Realloc(name_list,
-                                           sizeof(struct acct_info) *
-                                           (ent->num_sam_entries +
-                                            num_entries));
+                       tnl = Realloc(name_list,
+                                   sizeof(struct acct_info) *
+                                   (ent->num_sam_entries +
+                                    num_entries));
+                       if(tnl == NULL)
+                       {
+                               DEBUG(0,("get_sam_group_entries: unable ro realloc a structure!\n"));
+                               SAFE_FREE(name_list);
+                               return False;
+                       }
+                       else name_list = tnl;
 
                        memcpy(&name_list[ent->num_sam_entries],
                               sam_grp_entries, 
index eeaf9c63475f4aec7bbb2d959697f12fba5d7077..3282fbca9f374b4970827651a3dac1b121c31044 100644 (file)
@@ -722,6 +722,7 @@ NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, LSA_Q_ENUMPRIVSACCOUNT *q_u, LS
                if ( (map.privilege & privs[i].se_priv) == privs[i].se_priv) {
                        
                        set=(LUID_ATTR *)talloc_realloc(p->mem_ctx, set, (count+1)*sizeof(LUID_ATTR));
+                       if (set == NULL) return NT_STATUS_NO_MEMORY;
 
                        set[count].luid.low=privs[i].se_priv;
                        set[count].luid.high=1;
index 287b39bd1ed6dde0ad75ef7848be833d0bc78278..3956310241053619396d108897f04f25304d30ed 100644 (file)
@@ -40,6 +40,7 @@ main()
        DEBUGLEVEL=10;
 
        ctx=talloc_init();
+       if (!ctx) exit(1);
 
        prs_init(&ps, 1600, 4, ctx, MARSHALL);