From 09e967c2d732783b2579e4e120cd9b608404cb00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwenol=C3=A9=20Beauchesne?= Date: Wed, 4 Jun 2003 18:31:57 +0000 Subject: Merge from R9_0-AMD64, most notably: - AMD64 support to insmod-busybox, minilibc, et al. - Sync with insmod-modutils 2.4.19 something but everyone should use dietlibc nowadays - Factor out compilation and prefix with $(DIET) for dietlibc builds - 64-bit & varargs fixes --- mdk-stage1/dietlibc/libcruft/gethostbyname2.c | 40 ++++++++++++--------------- 1 file changed, 18 insertions(+), 22 deletions(-) (limited to 'mdk-stage1/dietlibc/libcruft/gethostbyname2.c') diff --git a/mdk-stage1/dietlibc/libcruft/gethostbyname2.c b/mdk-stage1/dietlibc/libcruft/gethostbyname2.c index 3d8296616..1ca140dbe 100644 --- a/mdk-stage1/dietlibc/libcruft/gethostbyname2.c +++ b/mdk-stage1/dietlibc/libcruft/gethostbyname2.c @@ -1,4 +1,3 @@ - #include #include #include @@ -6,35 +5,32 @@ #include #include #include -#include #include #include +#include "dietwarning.h" + +static const int hostentsize=((sizeof(struct hostent)+15)&(-16)); -extern int h_errno; +extern size_t __dns_buflen; +extern char* __dns_buf; +extern void __dns_makebuf(size_t x); -struct hostent* gethostbyname2(const char *host,int AF) -{ - static struct hostent hostbuf; +struct hostent* gethostbyname2(const char *host,int AF) { + struct hostent *hostbuf; struct hostent *hp; - size_t hstbuflen; - char *tmphstbuf; int res; int herr; - hstbuflen = 1024; - /* Allocate buffer, remember to free it to avoid a memory leakage. */ - tmphstbuf = malloc (hstbuflen); - - while ((res = gethostbyname2_r (host, AF,&hostbuf, tmphstbuf, hstbuflen, - &hp, &herr)) == ERANGE) - { - /* Enlarge the buffer. */ - hstbuflen *= 2; - tmphstbuf = realloc (tmphstbuf, hstbuflen); - } - /* Check for errors. */ - if (res || hp == NULL) - return NULL; + __dns_buflen=512; + do { + __dns_makebuf(__dns_buflen*2); if (!__dns_buf) return 0; + hostbuf=(struct hostent*)__dns_buf; + } while ((res = gethostbyname2_r (host, AF, hostbuf, + __dns_buf+hostentsize, + __dns_buflen-hostentsize, &hp, + &herr)) == ERANGE); + if (res) hp=0; return hp; } +link_warning("gethostbyname2","warning: gethostbyname2() leaks memory. Use gethostbyname2_r instead!") -- cgit v1.2.1