[WORKAROUND] Re: [Samba] duplicate domains in browse list

Jeremy Allison jra at samba.org
Thu May 27 22:51:45 GMT 2004


On Thu, May 27, 2004 at 08:45:22PM +0200, Joerg Pulz wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On Thu, 27 May 2004, Jeremy Allison wrote:
> 
> >Ok, all the changes here are just to reduce the size of string
> >used from an unstring to an nstring. Unfortunately this cannot
> >be correct as it would cause truncation for multibyte characters
> >in code pages like Japanese.
> >
> >It may be that the change you added causes extra non-zero bytes not
> >to be examined in the comparison functions. If that is the case
> >the following patch should have the same effect. If you could test
> >this instead of your patch I'd appreciate it.
> 
> I've tested the small patch on one DMB but it did NOT work.
> 
> I stopped 'smbd' and 'nmbd', removed the browse.dat file, installed the 
> new binaries, and started the whole thing.
> as soon as the browse.dat file is recreated, it contains domain names with 
> trailing spaces until MAX_NETBIOSNAME_LEN is reached.
> 
> I had to stop the processes to not pollute all browse lists again.

Ok, here is one definate bug I've found - we were not converting correctly to
UNIX charset before sending the mailslot in the function :

announce_local_master_browser_to_domain_master_browser()

However, I don't think this would cause the problem. Here is the
fix for this I've just checked in, if you could test this I'd appreciate
it.

Jeremy.
-------------- next part --------------
Index: nmbd/nmbd_browsesync.c
===================================================================
--- nmbd/nmbd_browsesync.c	(revision 926)
+++ nmbd/nmbd_browsesync.c	(working copy)
@@ -103,6 +103,7 @@
 {
 	pstring outbuf;
 	unstring myname;
+	unstring dmb_name;
 	char *p;
 
 	if(ismyip(work->dmb_addr)) {
@@ -135,8 +136,10 @@
 					work->work_group );
 	}
 
+	/* Target name for send_mailslot must be in UNIX charset. */
+	pull_ascii_nstring(dmb_name, sizeof(dmb_name), work->dmb_name.name);
 	send_mailslot(True, BROWSE_MAILSLOT, outbuf,PTR_DIFF(p,outbuf),
-		global_myname(), 0x0, work->dmb_name.name, 0x0, 
+		global_myname(), 0x0, dmb_name, 0x0, 
 		work->dmb_addr, FIRST_SUBNET->myip, DGRAM_PORT);
 }
 


More information about the samba mailing list