summaryrefslogtreecommitdiff
path: root/source3/nmbd/nmbd_browsesync.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nmbd/nmbd_browsesync.c')
-rw-r--r--source3/nmbd/nmbd_browsesync.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/source3/nmbd/nmbd_browsesync.c b/source3/nmbd/nmbd_browsesync.c
index cc81807de4..e4231e6017 100644
--- a/source3/nmbd/nmbd_browsesync.c
+++ b/source3/nmbd/nmbd_browsesync.c
@@ -379,7 +379,6 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
struct work_record *work;
struct nmb_name nmbname;
struct userdata_struct *userdata;
- char ud[sizeof(struct userdata_struct) + sizeof(fstring)+1];
if (!(work = find_workgroup_on_subnet(subrec, q_name->name))) {
DEBUG(0, ("find_domain_master_name_query_success: failed to find \
@@ -412,7 +411,11 @@ workgroup %s\n", q_name->name ));
/* Setup the userdata_struct - this is copied so we can use
a stack variable for this. */
- userdata = (struct userdata_struct *)ud;
+ if((userdata = (struct userdata_struct *)malloc(sizeof(struct userdata_struct) + sizeof(fstring)+1)) == NULL)
+ {
+ DEBUG(0, ("find_domain_master_name_query_success: malloc fail.\n"));
+ return;
+ }
userdata->copy_fn = NULL;
userdata->free_fn = NULL;
@@ -423,6 +426,8 @@ workgroup %s\n", q_name->name ));
domain_master_node_status_success,
domain_master_node_status_fail,
userdata);
+
+ free((char *)userdata);
}
/****************************************************************************