]> granicus.if.org Git - curl/commitdiff
Gisle Vanem's code for not trusting h_aliases to always be non-NULL
authorDaniel Stenberg <daniel@haxx.se>
Tue, 20 May 2003 09:41:39 +0000 (09:41 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 20 May 2003 09:41:39 +0000 (09:41 +0000)
lib/hostip.c

index dc38b9f7470e492adcb33577bab4e72f5c2b9baa..c245ab1b765a8398ac65f4d1227212e5bbf338ab 100644 (file)
@@ -455,18 +455,22 @@ static struct hostent* pack_hostent(char** buf, struct hostent* orig)
   copy->h_aliases = (char**)bufptr;
 
   /* Figure out how many aliases there are */
-  for (i = 0; orig->h_aliases[i] != NULL; ++i);
+  for (i = 0; orig->h_aliases && orig->h_aliases[i]; ++i);
 
   /* Reserve room for the array */
   bufptr += (i + 1) * sizeof(char*);
 
   /* Clone all known aliases */
-  for(i = 0; (str = orig->h_aliases[i]); i++) {
-    len = strlen(str) + 1;
-    strncpy(bufptr, str, len);
-    copy->h_aliases[i] = bufptr;
-    bufptr += len;
+  if(orig->h_aliases) {
+    for(i = 0; (str = orig->h_aliases[i]); i++) {
+      len = strlen(str) + 1;
+      strncpy(bufptr, str, len);
+      copy->h_aliases[i] = bufptr;
+      bufptr += len;
+    }
   }
+  /* if(!orig->h_aliases) i was already set to 0 */
+
   /* Terminate the alias list with a NULL */
   copy->h_aliases[i] = NULL;