1
0
Fork 0
mirror of https://git.freebsd.org/ports.git synced 2025-06-18 03:00:42 -04:00
ports/ftp/curl/files/patch-lib::hostip.c
Peter Pentchev 66087db901 Fix a segfault in an IPv4-only case - realloc() may really, well,
"reallocate" memory even when the programmer only asks for a resizing
of the region.

Reported by:	Steve Ames <steve@energistic.com>

While I'm here, change the way SSL header and library paths are handled
to avoid specifically referencing /usr/lib and /usr/include; while
-STABLE's GCC shrugs this off, GCC 3.1 whines loudly about an explicit
-I/usr/include (and rightly so, IMHO).
2002-06-24 16:03:00 +00:00

33 lines
921 B
C

--- lib/hostip.c.orig Mon Jun 24 17:05:50 2002
+++ lib/hostip.c Mon Jun 24 17:05:54 2002
@@ -360,7 +360,7 @@
*
* Keith McGuigan
* 10/3/2001 */
-static struct hostent* pack_hostent(char** buf, struct hostent* orig)
+static struct hostent* pack_hostent(char** buf, struct hostent* orig, int pass)
{
char* bufptr;
struct hostent* copy;
@@ -427,8 +427,9 @@
}
copy->h_addr_list[i] = NULL;
- *buf=(char *)realloc(*buf, (int)bufptr-(int)(*buf));
- return copy;
+ if (pass == 0)
+ *buf=(char *)realloc(*buf, (int)bufptr-(int)(*buf));
+ return *buf;
}
#endif
@@ -623,7 +624,8 @@
/* we make a copy of the hostent right now, right here, as the
static one we got a pointer to might get removed when we don't
want/expect that */
- h = pack_hostent(&buf, h);
+ pack_hostent(&buf, h, 0);
+ h = pack_hostent(&buf, h, 1);
*bufp=(char *)buf;
}
#endif