From 0d1933fefc3685cc2d5e48e05a323f5ef81be555 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 9 Jan 1998 05:33:27 +0000 Subject: docs/Support.txt: Removed consultant. source/Makefile: Added Volker's comment. source/nmbd_become_lmb.c: source/nmbd_browsesync.c: source/nmbd_incomingdgrams.c: Fixed userdata alignment problems. source/mem_man/mem_man.c: source/mem_man/mem_man.h: added smb_ prefix to stop namespace collisions. Jeremy. (This used to be commit 4c8af3bc9f43b2427609cbeecb7940b1753a9a1c) --- source3/nmbd/nmbd_become_lmb.c | 23 +++++++++++++++-------- source3/nmbd/nmbd_browsesync.c | 9 +++++++-- source3/nmbd/nmbd_incomingdgrams.c | 4 ++-- 3 files changed, 24 insertions(+), 12 deletions(-) (limited to 'source3/nmbd') diff --git a/source3/nmbd/nmbd_become_lmb.c b/source3/nmbd/nmbd_become_lmb.c index 2d9f2cce55..7bfd558003 100644 --- a/source3/nmbd/nmbd_become_lmb.c +++ b/source3/nmbd/nmbd_become_lmb.c @@ -248,7 +248,6 @@ void unbecome_local_master_browser(struct subnet_record *subrec, struct work_rec struct name_record *namerec; struct nmb_name nmbname; struct userdata_struct *userdata; - char ud[sizeof(struct userdata_struct) + sizeof(fstring)+1]; /* Sanity check. */ @@ -268,9 +267,11 @@ in workgroup %s on subnet %s\n", work->mst_state = MST_UNBECOMING_MASTER; /* Setup the userdata for the MSBROWSE name release. */ - /* 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,("unbecome_local_master_browser: malloc fail.\n")); + return; + } userdata->copy_fn = NULL; userdata->free_fn = NULL; @@ -286,6 +287,8 @@ in workgroup %s on subnet %s\n", release_msbrowse_name_fail, userdata); } + + free((char *)userdata); } /**************************************************************************** @@ -481,7 +484,6 @@ void become_local_master_browser(struct subnet_record *subrec, struct work_recor { struct server_record *servrec; struct userdata_struct *userdata; - char ud[sizeof(struct userdata_struct) + sizeof(fstring)+1]; /* Sanity check. */ if (!lp_local_master()) @@ -516,9 +518,12 @@ in workgroup %s on subnet %s\n", /* Tell the namelist writer to write out a change. */ subrec->work_changed = True; - /* Setup the userdata_struct - this is copied so we can use - a stack variable for this. */ - userdata = (struct userdata_struct *)ud; + /* Setup the userdata_struct. */ + if((userdata = (struct userdata_struct *)malloc(sizeof(struct userdata_struct) + sizeof(fstring)+1)) == NULL) + { + DEBUG(0,("become_local_master_browser: malloc fail.\n")); + return; + } userdata->copy_fn = NULL; userdata->free_fn = NULL; @@ -530,6 +535,8 @@ in workgroup %s on subnet %s\n", become_local_master_stage1, become_local_master_fail1, userdata); + + free((char *)userdata); } /*************************************************************** 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); } /**************************************************************************** diff --git a/source3/nmbd/nmbd_incomingdgrams.c b/source3/nmbd/nmbd_incomingdgrams.c index 2396c847a3..b1de27f181 100644 --- a/source3/nmbd/nmbd_incomingdgrams.c +++ b/source3/nmbd/nmbd_incomingdgrams.c @@ -547,7 +547,7 @@ static void send_backup_list_response(struct subnet_record *subrec, { char outbuf[1024]; char *p, *countptr, *nameptr; - int count = 0; + unsigned int count = 0; int len; struct server_record *servrec; @@ -582,7 +582,7 @@ static void send_backup_list_response(struct subnet_record *subrec, if((sizeof(outbuf) - len) < 16) break; - if(count >= max_number_requested) + if(count >= (unsigned int)max_number_requested) break; if(strnequal(servrec->serv.name, myname,15)) -- cgit