Author: jerry Date: 2004-10-26 14:22:37 +0000 (Tue, 26 Oct 2004) New Revision: 3264
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_3_0/source/libsmb&rev=3264&nolog=1 Log: fix lmhosts lookup so that we don't say we found something when we really didn't Modified: branches/SAMBA_3_0/source/libsmb/namequery.c Changeset: Modified: branches/SAMBA_3_0/source/libsmb/namequery.c =================================================================== --- branches/SAMBA_3_0/source/libsmb/namequery.c 2004-10-26 13:19:07 UTC (rev 3263) +++ branches/SAMBA_3_0/source/libsmb/namequery.c 2004-10-26 14:22:37 UTC (rev 3264) @@ -847,6 +847,7 @@ pstring lmhost_name; int name_type2; struct in_addr return_ip; + BOOL result = False; *return_iplist = NULL; *return_count = 0; @@ -854,38 +855,42 @@ DEBUG(3,("resolve_lmhosts: Attempting lmhosts lookup for name %s<0x%x>\n", name, name_type)); fp = startlmhosts(dyn_LMHOSTSFILE); - if(fp) { - while (getlmhostsent(fp, lmhost_name, &name_type2, - &return_ip)) { - if (!strequal(name, lmhost_name)) - continue; + if ( fp == NULL ) + return False; - if ((name_type2 != -1) && (name_type != name_type2)) - continue; + while (getlmhostsent(fp, lmhost_name, &name_type2, &return_ip)) + { - *return_iplist = (struct ip_service *) - realloc((*return_iplist), - sizeof(struct ip_service) * - ((*return_count)+1)); + if (!strequal(name, lmhost_name)) + continue; - if ((*return_iplist) == NULL) { - DEBUG(3,("resolve_lmhosts: malloc fail !\n")); - return False; - } + if ((name_type2 != -1) && (name_type != name_type2)) + continue; - (*return_iplist)[*return_count].ip = return_ip; - (*return_iplist)[*return_count].port = PORT_NONE; - *return_count += 1; + *return_iplist = (struct ip_service *)realloc((*return_iplist), + sizeof(struct ip_service) * ((*return_count)+1)); - /* Multiple names only for DC lookup */ - if (name_type != 0x1c) - break; + if ((*return_iplist) == NULL) { + DEBUG(3,("resolve_lmhosts: malloc fail !\n")); + return False; } - endlmhosts(fp); - return True; + + (*return_iplist)[*return_count].ip = return_ip; + (*return_iplist)[*return_count].port = PORT_NONE; + *return_count += 1; + + /* we found something */ + result = True; + + /* Multiple names only for DC lookup */ + if (name_type != 0x1c) + break; } - return False; + + endlmhosts(fp); + + return result; }