From cef458e0762c468fdede3b282e0b1154fadb3412 Mon Sep 17 00:00:00 2001 From: thierry Date: Sun, 4 Feb 2007 20:48:04 +0000 Subject: Add a patch to to eliminate segfaults. PR: ports/108693 Submitted by: Kevin Oberman (maintainer) --- net-mgmt/irrtoolset/Makefile | 1 + .../irrtoolset/files/patch-src-irr-rawhoisc.cc | 69 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 net-mgmt/irrtoolset/files/patch-src-irr-rawhoisc.cc (limited to 'net-mgmt') diff --git a/net-mgmt/irrtoolset/Makefile b/net-mgmt/irrtoolset/Makefile index 74b312038693..5431d7c330f2 100644 --- a/net-mgmt/irrtoolset/Makefile +++ b/net-mgmt/irrtoolset/Makefile @@ -7,6 +7,7 @@ PORTNAME= irrtoolset PORTVERSION= 4.8.4 +PORTREVISION= 1 CATEGORIES= net-mgmt MASTER_SITES= ${MASTER_SITE_ISC} \ ftp://ftp.ripe.net/tools/ diff --git a/net-mgmt/irrtoolset/files/patch-src-irr-rawhoisc.cc b/net-mgmt/irrtoolset/files/patch-src-irr-rawhoisc.cc new file mode 100644 index 000000000000..0da4d79d783d --- /dev/null +++ b/net-mgmt/irrtoolset/files/patch-src-irr-rawhoisc.cc @@ -0,0 +1,69 @@ + +Add the following file as files/patch-src-irr-rawhoisc.cc and bump +PORTREVISION (to 1). + +--- src/irr/rawhoisc.cc.orig Thu Jun 8 08:16:26 2006 ++++ src/irr/rawhoisc.cc Tue Jan 23 15:14:24 2007 +@@ -1,4 +1,4 @@ +-// $Id: rawhoisc.cc,v 4.11 2006/06/08 15:16:26 shane Exp $ ++// $Id: rawhoisc.cc,v 4.11.10.1 2006/12/08 08:33:52 shane Exp $ + // Copyright (c) 2001,2002 RIPE NCC + // + // All Rights Reserved +@@ -187,7 +187,7 @@ + } + + void RAWhoisClient::GetVersion() { +- char *buffer = (char *) calloc (80,1); ++ char *buffer; + char *start; + + if (! _is_open) +@@ -199,7 +199,7 @@ + start = start + 8; //jump + version = atoi(start)*10 + atoi(start+2); // x.x... format + Trace(TR_WHOIS_RESPONSE) << "Whois: Response " << buffer << endl; +- free(buffer); ++ delete [] buffer; + } + + void RAWhoisClient::SetSources(const char *_sources) { +@@ -298,9 +298,11 @@ + return 0; + } + if (is_rpslng()) { +- response = strdup(""); +- char *prev; ++ response = new char[1]; ++ response[0] = '\0'; ++ char *prev = NULL; + do { ++ free(prev); + prev = strdup(buffer); + Trace(TR_WHOIS_RESPONSE) << "Whois: Response <<\n" << buffer <<">>"<< endl; + if (strstr (buffer, "route") || strstr(buffer, "route6")) { +@@ -315,18 +317,20 @@ + // save response + tmp = strdup (response); + // allocate new string ++ delete [] response; + response = new char [strlen(tmp) + strlen(end_prefix) + 2]; +- memset(response, 0, strlen(response)); + // copy old and new response +- strncat (response, tmp, strlen(tmp)); +- strncat (response, " ", 1); +- strncat (response, end_prefix, strlen(end_prefix)); ++ strcpy(response, tmp); ++ strcat(response, " "); ++ strcat(response, end_prefix); + free(tmp); + } + } while (fgets(buffer, sizeof(buffer), in) && + // this condition should work with irrd version >= 2.2b19 + // until then, ripe-style queries won't work with persistent connections + !((*prev == '\n') && (*buffer == '\n'))); ++ ++ free(prev); + + // The WHOIS protocol and RPSL give no indication of + // end of a protocol data unit, so we need to keep -- cgit