summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2001-10-03 21:10:29 +0000
committerSimo Sorce <idra@samba.org>2001-10-03 21:10:29 +0000
commita42efb497153dcca1fad227e28f5eaf41ee943c3 (patch)
treea3a2ea3db448af8624ea6b7cc86094d278dbd95f
parent9d4e919f4a3c901c9e70bd710335f94cc5b726df (diff)
downloadsamba-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.c17
-rw-r--r--source3/rpc_server/srv_lsa_nt.c1
-rw-r--r--source3/utils/rpccheck.c1
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);