James Bursa's fix to prevent free(NULL) to occur
authorDaniel Stenberg <daniel@haxx.se>
Thu, 27 May 2004 06:42:48 +0000 (06:42 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 27 May 2004 06:42:48 +0000 (06:42 +0000)
ares__get_hostent.c

index ecba75c927d44b451f75fff3afdb1a89d510a459..f05d71299114eee5b95bed8443287e47f0a3e771 100644 (file)
@@ -140,7 +140,8 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
       memcpy(hostent->h_addr_list[0], &addr, sizeof(struct in_addr));
       hostent->h_addr_list[1] = NULL;
       *host = hostent;
-      free(line);
+      if(line)
+        free(line);
       return ARES_SUCCESS;
     }
   free(line);
@@ -150,18 +151,21 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
       /* Memory allocation failure; clean up. */
       if (hostent)
        {
-         free((char *) hostent->h_name);
+          if(hostent->h_name)
+            free((char *) hostent->h_name);
          if (hostent->h_aliases)
            {
              for (alias = hostent->h_aliases; *alias; alias++)
                free(*alias);
            }
-         free(hostent->h_aliases);
+          if(hostent->h_aliases)
+            free(hostent->h_aliases);
          if (hostent->h_addr_list)
            free(hostent->h_addr_list[0]);
-         free(hostent->h_addr_list);
+          if(hostent->h_addr_list)
+            free(hostent->h_addr_list);
+          free(hostent);
        }
-      free(hostent);
       return ARES_ENOMEM;
     }