Fix bug noticed by kukks <linux@kukkukk.com> where
authorJeremy Allison <jra@samba.org>
Fri, 16 Nov 2007 01:59:12 +0000 (17:59 -0800)
committerJeremy Allison <jra@samba.org>
Fri, 16 Nov 2007 01:59:12 +0000 (17:59 -0800)
ip list didn't match namelist added to subnetdb.
Could cause bogus IP addresses to be reported for
the __SAMBA__ name.
Jeremy.
(This used to be commit ad9f14b6dcb05e8fa68b51ff26ff40fc445a4631)

source3/nmbd/nmbd_namelistdb.c

index ae5f766e66954eaa91daf0ee5810495d6c0ef005..f9cbcf4f59a4948b52201e86759c280cbe011a65 100644 (file)
@@ -192,6 +192,10 @@ bool add_name_to_subnet( struct subnet_record *subrec,
        struct name_record *namerec;
        time_t time_now = time(NULL);
 
+       if (num_ips == 0) {
+               return false;
+       }
+
        namerec = SMB_MALLOC_P(struct name_record);
        if( NULL == namerec ) {
                DEBUG( 0, ( "add_name_to_subnet: malloc fail.\n" ) );
@@ -504,8 +508,12 @@ void add_samba_names_to_subnet( struct subnet_record *subrec )
                        return;
                }
 
-               for( bcast_subrecs = FIRST_SUBNET, i = 0; bcast_subrecs; bcast_subrecs = NEXT_SUBNET_EXCLUDING_UNICAST(bcast_subrecs), i++ )
+               for( bcast_subrecs = FIRST_SUBNET, i = 0; bcast_subrecs &&
+                               i < num_ips;
+                               bcast_subrecs = NEXT_SUBNET_EXCLUDING_UNICAST(bcast_subrecs), i++ ) {
                        iplist[i] = bcast_subrecs->myip;
+               }
+               num_ips = i;
        }
 
        add_name_to_subnet(subrec,"*",0x0,samba_nb_type, PERMANENT_TTL,