From 7a52f44bd40a440a2ef105933f168dc943cc50c5 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 29 Jun 2004 18:44:59 +0000 Subject: Gisle fixed a bad free from the resolve reorg, I changed type of the buf variable to sort out some compiler warnings. --- lib/hostip4.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'lib/hostip4.c') diff --git a/lib/hostip4.c b/lib/hostip4.c index 76f75181e..f380d3ef8 100644 --- a/lib/hostip4.c +++ b/lib/hostip4.c @@ -196,6 +196,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, struct hostent *h = NULL; in_addr_t in; struct SessionHandle *data = conn->data; + struct hostent *buf = NULL; + (void)port; /* unused in IPv4 code */ *waitp = 0; /* don't wait, we act synchronously */ @@ -215,7 +217,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, else { int h_errnop; int res=ERANGE; - int *buf = (int *)calloc(CURL_HOSTENT_SIZE, 1); + + buf = (struct hostent *)calloc(CURL_HOSTENT_SIZE, 1); if(!buf) return NULL; /* major failure */ /* @@ -326,7 +329,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, if(!res) { /* success */ - h = (struct hostent*)buf; /* result expected in h */ + h = buf; /* result expected in h */ /* This is the worst kind of the different gethostbyname_r() interfaces. * Since we don't know how big buffer this particular lookup required, @@ -359,7 +362,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, if(h) { ai = Curl_he2ai(h, port); - free(h); + if (h == buf) /* used a *_r() function */ + free(h); } return ai; -- cgit v1.2.3