diff options
author | Simo Sorce <idra@samba.org> | 2001-10-03 21:10:29 +0000 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2001-10-03 21:10:29 +0000 |
commit | a42efb497153dcca1fad227e28f5eaf41ee943c3 (patch) | |
tree | a3a2ea3db448af8624ea6b7cc86094d278dbd95f | |
parent | 9d4e919f4a3c901c9e70bd710335f94cc5b726df (diff) | |
download | samba-a42efb497153dcca1fad227e28f5eaf41ee943c3.tar.gz samba-a42efb497153dcca1fad227e28f5eaf41ee943c3.tar.xz samba-a42efb497153dcca1fad227e28f5eaf41ee943c3.zip |
fix some possible memleaks and not tested reallocs spotted by Andreas Moroder
(This used to be commit d30939a091b48f4d77f7618c75668ae151a5592e)
-rw-r--r-- | source3/nsswitch/winbindd_group.c | 17 | ||||
-rw-r--r-- | source3/rpc_server/srv_lsa_nt.c | 1 | ||||
-rw-r--r-- | source3/utils/rpccheck.c | 1 |
3 files changed, 14 insertions, 5 deletions
diff --git a/source3/nsswitch/winbindd_group.c b/source3/nsswitch/winbindd_group.c index 2b567f13362..ab693eff633 100644 --- a/source3/nsswitch/winbindd_group.c +++ b/source3/nsswitch/winbindd_group.c @@ -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, diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c index eeaf9c63475..3282fbca9f3 100644 --- a/source3/rpc_server/srv_lsa_nt.c +++ b/source3/rpc_server/srv_lsa_nt.c @@ -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; diff --git a/source3/utils/rpccheck.c b/source3/utils/rpccheck.c index 287b39bd1ed..39563102410 100644 --- a/source3/utils/rpccheck.c +++ b/source3/utils/rpccheck.c @@ -40,6 +40,7 @@ main() DEBUGLEVEL=10; ctx=talloc_init(); + if (!ctx) exit(1); prs_init(&ps, 1600, 4, ctx, MARSHALL); |