X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcanon-host.c;h=b0c2f44bb1a3e92cf4196514efa49011d2730eec;hb=ec354b13bec21d8510dd60e1e129cc194809248b;hp=9d968a0359bf98f2dcc7dbaa0575ec930f86f971;hpb=968fbdf8796db1bd5120865d8d2905bab6bd17fb;p=gnulib.git diff --git a/lib/canon-host.c b/lib/canon-host.c index 9d968a035..b0c2f44bb 100644 --- a/lib/canon-host.c +++ b/lib/canon-host.c @@ -1,6 +1,6 @@ /* Host name canonicalization - Copyright (C) 1995, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. Written by Miles Bader @@ -26,9 +26,8 @@ #ifdef HAVE_UNISTD_H # include #endif -#ifdef HAVE_STRING_H -# include -#endif +#include +#include #ifdef HAVE_NETDB_H # include #endif @@ -43,9 +42,6 @@ # include #endif -char *strdup (); -void free (); - /* Returns the canonical hostname associated with HOST (allocated in a static buffer), or 0 if it can't be determined. */ char * @@ -78,11 +74,12 @@ canon_host (const char *host) directly to gethostbyaddr because on some systems he->h_addr is located in a static library buffer that is reused in the gethostbyaddr call. Make a copy and use that instead. */ - char *h_addr_copy = strdup (he->h_addr); + char *h_addr_copy = (char *) malloc (he->h_length); if (h_addr_copy == NULL) he = NULL; else { + memcpy (h_addr_copy, he->h_addr, he->h_length); he = gethostbyaddr (h_addr_copy, he->h_length, he->h_addrtype); free (h_addr_copy); }