summaryrefslogtreecommitdiff
path: root/source3/nmbd/nmbd_elections.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-08-28 18:12:59 +0000
committerJeremy Allison <jra@samba.org>2003-08-28 18:12:59 +0000
commit6872f392f1a8cd667aecc8df0b15da66f58c9407 (patch)
tree64adecb7953a5031dbe0fa6a90e840f0c13aac1e /source3/nmbd/nmbd_elections.c
parent76bcb93c66395f6d3e7bd960489094fcafa9fa89 (diff)
downloadsamba-6872f392f1a8cd667aecc8df0b15da66f58c9407.tar.gz
samba-6872f392f1a8cd667aecc8df0b15da66f58c9407.tar.bz2
samba-6872f392f1a8cd667aecc8df0b15da66f58c9407.zip
Fixed off-by-one bugs in workgroup name comparisons. Complain when a
workgroup name is >15 characters. Jeremy. (This used to be commit 35a0b3c035d50474eda97b015676885722737a95)
Diffstat (limited to 'source3/nmbd/nmbd_elections.c')
-rw-r--r--source3/nmbd/nmbd_elections.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/source3/nmbd/nmbd_elections.c b/source3/nmbd/nmbd_elections.c
index e341f6f7fb..fabc0eddca 100644
--- a/source3/nmbd/nmbd_elections.c
+++ b/source3/nmbd/nmbd_elections.c
@@ -97,7 +97,7 @@ static void check_for_master_browser_fail( struct subnet_record *subrec,
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
@@ -145,7 +145,7 @@ void check_master_browser_exists(time_t t)
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,
@@ -284,7 +284,7 @@ void process_election(struct subnet_record *subrec, struct packet_struct *p, cha
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;
@@ -381,7 +381,7 @@ void nmbd_message_election(int msg_type, pid_t src, void *buf, size_t len)
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;