diff options
Diffstat (limited to 'source3/nmbd/nmbd_browsesync.c')
-rw-r--r-- | source3/nmbd/nmbd_browsesync.c | 9 |
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); } /**************************************************************************** |