diff options
author | Jeremy Allison <jra@samba.org> | 2007-11-15 17:59:12 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-11-15 17:59:12 -0800 |
commit | ad9f14b6dcb05e8fa68b51ff26ff40fc445a4631 (patch) | |
tree | 2d3d73433c8489466b2701e3affcc158294f0048 /source/nmbd | |
parent | 11bcdf780e164659b89a66e24edc27e89da7619a (diff) | |
download | samba-ad9f14b6dcb05e8fa68b51ff26ff40fc445a4631.tar.gz samba-ad9f14b6dcb05e8fa68b51ff26ff40fc445a4631.tar.xz samba-ad9f14b6dcb05e8fa68b51ff26ff40fc445a4631.zip |
Fix bug noticed by kukks <linux@kukkukk.com> where
ip list didn't match namelist added to subnetdb.
Could cause bogus IP addresses to be reported for
the __SAMBA__ name.
Jeremy.
Diffstat (limited to 'source/nmbd')
-rw-r--r-- | source/nmbd/nmbd_namelistdb.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/nmbd/nmbd_namelistdb.c b/source/nmbd/nmbd_namelistdb.c index ae5f766e669..f9cbcf4f59a 100644 --- a/source/nmbd/nmbd_namelistdb.c +++ b/source/nmbd/nmbd_namelistdb.c @@ -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, |