return;
}
- if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring))) {
+ if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
if (lp_local_master()) {
/* We have discovered that there is no local master
struct work_record *work;
for (work = subrec->workgrouplist; work; work = work->next) {
- if (strnequal(work->work_group, workgroup_name, sizeof(nstring)) && !AM_LOCAL_MASTER_BROWSER(work)) {
+ if (strnequal(work->work_group, workgroup_name, sizeof(nstring)-1) && !AM_LOCAL_MASTER_BROWSER(work)) {
/* Do a name query for the local master browser on this net. */
query_name( subrec, work->work_group, 0x1d,
check_for_master_browser_success,
goto done;
}
- if (!strnequal(work->work_group, lp_workgroup(), sizeof(nstring))) {
+ if (!strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
DEBUG(3,("process_election: ignoring election request for workgroup %s on subnet %s as this \
is not my workgroup.\n", work->work_group, subrec->subnet_name ));
goto done;
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) {
struct work_record *work;
for (work = subrec->workgrouplist; work; work = work->next) {
- if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring))) {
+ if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
work->needelection = True;
work->ElectionCount=0;
work->mst_state = lp_local_master() ? MST_POTENTIAL : MST_NONE;
{
struct subnet_record *ssub;
- if(strnequal(lp_workgroup(), work->work_group, sizeof(nstring)))
+ if(strnequal(lp_workgroup(), work->work_group, sizeof(nstring)-1))
return 0;
/* This is a workgroup we have seen on a broadcast subnet. All
}
memset((char *)work, '\0', sizeof(*work));
- nstrcpy(work->work_group,name);
+ if (strlen(name)+1 > sizeof(nstring)) {
+ memcpy(work->work_group,name,sizeof(nstring)-1);
+ work->work_group[sizeof(nstring)-1] = '\0';
+ DEBUG(0,("create_workgroup: workgroup name %s is too long. Truncating to %s\n",
+ name, work->work_group ));
+ } else {
+ nstrcpy(work->work_group,name);
+ }
work->serverlist = NULL;
work->RunningElection = False;
for (subrec = FIRST_SUBNET; subrec && (t == -1); subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec)) {
struct work_record *w;
for (w = subrec->workgrouplist; w && t == -1; w = w->next) {
- if (strnequal(w->work_group, work->work_group, sizeof(nstring)))
+ if (strnequal(w->work_group, work->work_group, sizeof(nstring)-1))
t = w->token;
}
}
name, subrec->subnet_name));
for (ret = subrec->workgrouplist; ret; ret = ret->next) {
- if (strnequal(ret->work_group,name,sizeof(nstring))) {
+ if (strnequal(ret->work_group,name,sizeof(nstring)-1)) {
DEBUGADD(4, ("found.\n"));
return(ret);
}
{
int i;
- if(!strnequal(lp_workgroup(), work->work_group,sizeof(nstring)))
+ if(!strnequal(lp_workgroup(), work->work_group,sizeof(nstring)-1))
return;
/* If this is a broadcast subnet then start elections on it if we are so configured. */