X-Git-Url: http://git.samba.org/?p=samba.git;a=blobdiff_plain;f=source3%2Fnmbd%2Fnmbd_workgroupdb.c;h=14b33b321e1cd2262cebb346f7108f5add689893;hp=82c3a31669d52e36783dcb769ac8749d30171ba4;hb=5743277ed6297ce77afcdb7b336c8929c83af8a3;hpb=89d33395e31a7ccb6b091e4a99a30d12e3367238 diff --git a/source3/nmbd/nmbd_workgroupdb.c b/source3/nmbd/nmbd_workgroupdb.c index 82c3a31669d..14b33b321e1 100644 --- a/source3/nmbd/nmbd_workgroupdb.c +++ b/source3/nmbd/nmbd_workgroupdb.c @@ -21,6 +21,8 @@ */ #include "includes.h" +#include "../librpc/gen_ndr/svcctl.h" +#include "nmbd/nmbd.h" extern uint16 samba_nb_type; @@ -50,7 +52,7 @@ static void name_to_unstring(unstring unname, const char *name) if (errno == E2BIG) { unstring tname; pull_ascii_nstring(tname, sizeof(tname), nname); - unstrcpy(unname, tname); + strlcpy(unname, tname, sizeof(nname)); DEBUG(0,("name_to_nstring: workgroup name %s is too long. Truncating to %s\n", name, tname)); } else { @@ -139,14 +141,7 @@ static struct work_record *remove_workgroup_from_subnet(struct subnet_record *su remove_all_servers(work); if (!work->serverlist) { - if (work->prev) - work->prev->next = work->next; - if (work->next) - work->next->prev = work->prev; - - if (subrec->workgrouplist == work) - subrec->workgrouplist = work->next; - + DLIST_REMOVE(subrec->workgrouplist, work); ZERO_STRUCTP(work); SAFE_FREE(work); } @@ -255,11 +250,11 @@ workgroup %s on subnet %s\n", work->work_group, subrec->subnet_name)); const char *name = my_netbios_names(i); int stype = lp_default_server_announce() | (lp_local_master() ? SV_TYPE_POTENTIAL_BROWSER : 0 ); - if(!strequal(global_myname(), name)) + if(!strequal(lp_netbios_name(), name)) stype &= ~(SV_TYPE_MASTER_BROWSER|SV_TYPE_POTENTIAL_BROWSER|SV_TYPE_DOMAIN_MASTER|SV_TYPE_DOMAIN_MEMBER); create_server_on_workgroup(work,name,stype|SV_TYPE_LOCAL_LIST_ONLY, PERMANENT_TTL, - string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH)); + string_truncate(lp_serverstring(talloc_tos()), MAX_SERVER_STRING_LENGTH)); DEBUG(3,("initiate_myworkgroup_startup: Added server name entry %s \ on subnet %s\n", name, subrec->subnet_name)); } @@ -269,7 +264,7 @@ on subnet %s\n", name, subrec->subnet_name)); Dump a copy of the workgroup database into the log file. **************************************************************************/ -void dump_workgroups(BOOL force_write) +void dump_workgroups(bool force_write) { struct subnet_record *subrec; int debuglevel = force_write ? 0 : 4;