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;
 }
 
 

Reply via email to