summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2005-08-02 20:59:20 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:00:22 -0500
commita4cdedcc085e0b9a94e6757a9b427af503ad6593 (patch)
treec6449c72e196f73ade52fae3234ada41f6aa7616
parent6ab9ff8e9fd263c51637ea84c7c9fa392e4cf30f (diff)
downloadsamba-a4cdedcc085e0b9a94e6757a9b427af503ad6593.tar.gz
samba-a4cdedcc085e0b9a94e6757a9b427af503ad6593.tar.bz2
samba-a4cdedcc085e0b9a94e6757a9b427af503ad6593.zip
r8950: Fix one more mem leak found by Gunther.
Jeremy. (This used to be commit 547c6ee0a965b425719cdb834dd5d68a3a3e7117)
-rw-r--r--source3/rpc_server/srv_dfs_nt.c2
-rw-r--r--source3/smbd/msdfs.c8
2 files changed, 5 insertions, 5 deletions
diff --git a/source3/rpc_server/srv_dfs_nt.c b/source3/rpc_server/srv_dfs_nt.c
index 938b01540f..b005192010 100644
--- a/source3/rpc_server/srv_dfs_nt.c
+++ b/source3/rpc_server/srv_dfs_nt.c
@@ -319,7 +319,7 @@ WERROR _dfs_enum(pipes_struct *p, DFS_Q_DFS_ENUM *q_u, DFS_R_DFS_ENUM *r_u)
struct junction_map jn[MAX_MSDFS_JUNCTIONS];
int num_jn = 0;
- num_jn = enum_msdfs_links(jn, ARRAY_SIZE(jn));
+ num_jn = enum_msdfs_links(p->mem_ctx, jn, ARRAY_SIZE(jn));
vfs_ChDir(p->conn,p->conn->connectpath);
DEBUG(5,("make_reply_dfs_enum: %d junctions found in Dfs, doing level %d\n", num_jn, level));
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index e66c13ab93..0f63966a7d 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -948,7 +948,7 @@ BOOL remove_msdfs_link(struct junction_map* jucn)
return ret;
}
-static int form_junctions(int snum, struct junction_map* jucn, int jn_remain)
+static int form_junctions(TALLOC_CTX *ctx, int snum, struct junction_map* jucn, int jn_remain)
{
int cnt = 0;
DIR *dirp;
@@ -981,7 +981,7 @@ static int form_junctions(int snum, struct junction_map* jucn, int jn_remain)
jucn[cnt].volume_name[0] = '\0';
jucn[cnt].referral_count = 1;
- ref = jucn[cnt].referral_list = SMB_MALLOC_P(struct referral);
+ ref = jucn[cnt].referral_list = TALLOC_P(ctx, struct referral);
if (jucn[cnt].referral_list == NULL) {
DEBUG(0, ("Malloc failed!\n"));
goto out;
@@ -1023,7 +1023,7 @@ out:
return cnt;
}
-int enum_msdfs_links(struct junction_map* jucn, int jn_max)
+int enum_msdfs_links(TALLOC_CTX *ctx, struct junction_map* jucn, int jn_max)
{
int i=0;
int jn_count = 0;
@@ -1033,7 +1033,7 @@ int enum_msdfs_links(struct junction_map* jucn, int jn_max)
for(i=0;i < lp_numservices() && (jn_max - jn_count) > 0;i++) {
if(lp_msdfs_root(i))
- jn_count += form_junctions(i,jucn,jn_max - jn_count);
+ jn_count += form_junctions(ctx, i,jucn,jn_max - jn_count);
}
return jn_count;
}