aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorRyan Steinmetz <zi@FreeBSD.org>2020-08-04 17:59:57 +0800
committerRyan Steinmetz <zi@FreeBSD.org>2020-08-04 17:59:57 +0800
commit4022aca28b6a475b96c7b924aa28fd7f58960673 (patch)
treed2730b59b4946db7f072f8015f9dd12851dfb77d /net
parentd02ba0c6050430a4e0d3c10b9902abe5663c2543 (diff)
downloadfreebsd-ports-gnome-4022aca28b6a475b96c7b924aa28fd7f58960673.tar.gz
freebsd-ports-gnome-4022aca28b6a475b96c7b924aa28fd7f58960673.tar.zst
freebsd-ports-gnome-4022aca28b6a475b96c7b924aa28fd7f58960673.zip
- Merge in upstream patch to address memory leaks
- Bump PORTREVISION
Diffstat (limited to 'net')
-rw-r--r--net/ip2location/Makefile1
-rw-r--r--net/ip2location/files/patch-memleak369
2 files changed, 370 insertions, 0 deletions
diff --git a/net/ip2location/Makefile b/net/ip2location/Makefile
index 1628ff97c60b..8793851fc979 100644
--- a/net/ip2location/Makefile
+++ b/net/ip2location/Makefile
@@ -3,6 +3,7 @@
PORTNAME= ip2location
PORTVERSION= 8.0.9
+PORTREVISION= 1
CATEGORIES= net
MAINTAINER= zi@FreeBSD.org
diff --git a/net/ip2location/files/patch-memleak b/net/ip2location/files/patch-memleak
new file mode 100644
index 000000000000..7ccf982d46af
--- /dev/null
+++ b/net/ip2location/files/patch-memleak
@@ -0,0 +1,369 @@
+diff --git a/libIP2Location/IP2Location.c b/libIP2Location/IP2Location.c
+index fbe7fe0..a57ba2f 100644
+--- libIP2Location/IP2Location.c
++++ libIP2Location/IP2Location.c
+@@ -151,8 +151,8 @@ static int IP2Location_initialize(IP2Location *loc)
+ loc->ipv6databasecount = IP2Location_read32(loc->filehandle, 14);
+ loc->ipv6databaseaddr = IP2Location_read32(loc->filehandle, 18);
+
+- loc->ipv4indexbaseaddr = IP2Location_read32(loc->filehandle, 22);
+- loc->ipv6indexbaseaddr = IP2Location_read32(loc->filehandle, 26);
++ loc->ipv4indexbaseaddr = IP2Location_read32(loc->filehandle, 22);
++ loc->ipv6indexbaseaddr = IP2Location_read32(loc->filehandle, 26);
+
+ return 0;
+ }
+@@ -381,47 +381,77 @@ static IP2LocationRecord *IP2Location_read_record(IP2Location *loc, uint32_t row
+
+ if ((mode & COUNTRYSHORT) && (COUNTRY_POSITION[dbtype] != 0))
+ {
+- record->country_short = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (COUNTRY_POSITION[dbtype]-1)));
++ if (!record->country_short)
++ {
++ record->country_short = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (COUNTRY_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->country_short = strdup(NOT_SUPPORTED);
++ if (!record->country_short)
++ {
++ record->country_short = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & COUNTRYLONG) && (COUNTRY_POSITION[dbtype] != 0))
+ {
+- record->country_long = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (COUNTRY_POSITION[dbtype]-1))+3);
++ if (!record->country_long)
++ {
++ record->country_long = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (COUNTRY_POSITION[dbtype]-1))+3);
++ }
+ }
+ else
+ {
+- record->country_long = strdup(NOT_SUPPORTED);
++ if (!record->country_long)
++ {
++ record->country_long = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & REGION) && (REGION_POSITION[dbtype] != 0))
+ {
+- record->region = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (REGION_POSITION[dbtype]-1)));
++ if (!record->region)
++ {
++ record->region = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (REGION_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->region = strdup(NOT_SUPPORTED);
++ if (!record->region)
++ {
++ record->region = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & CITY) && (CITY_POSITION[dbtype] != 0))
+ {
+- record->city = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (CITY_POSITION[dbtype]-1)));
++ if (!record->city)
++ {
++ record->city = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (CITY_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->city = strdup(NOT_SUPPORTED);
++ if (!record->city)
++ {
++ record->city = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & ISP) && (ISP_POSITION[dbtype] != 0))
+ {
+- record->isp = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (ISP_POSITION[dbtype]-1)));
++ if (!record->isp)
++ {
++ record->isp = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (ISP_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->isp = strdup(NOT_SUPPORTED);
++ if (!record->isp)
++ {
++ record->isp = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & LATITUDE) && (LATITUDE_POSITION[dbtype] != 0))
+@@ -444,108 +474,174 @@ static IP2LocationRecord *IP2Location_read_record(IP2Location *loc, uint32_t row
+
+ if ((mode & DOMAIN_) && (DOMAIN_POSITION[dbtype] != 0))
+ {
+- record->domain = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (DOMAIN_POSITION[dbtype]-1)));
++ if (!record->domain)
++ {
++ record->domain = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (DOMAIN_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->domain = strdup(NOT_SUPPORTED);
++ if (!record->domain)
++ {
++ record->domain = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & ZIPCODE) && (ZIPCODE_POSITION[dbtype] != 0))
+ {
+- record->zipcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (ZIPCODE_POSITION[dbtype]-1)));
++ if (!record->zipcode)
++ {
++ record->zipcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (ZIPCODE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->zipcode = strdup(NOT_SUPPORTED);
++ if (!record->zipcode)
++ {
++ record->zipcode = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & TIMEZONE) && (TIMEZONE_POSITION[dbtype] != 0))
+ {
+- record->timezone = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (TIMEZONE_POSITION[dbtype]-1)));
++ if (!record->timezone)
++ {
++ record->timezone = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (TIMEZONE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->timezone = strdup(NOT_SUPPORTED);
++ if (!record->timezone)
++ {
++ record->timezone = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & NETSPEED) && (NETSPEED_POSITION[dbtype] != 0))
+ {
+- record->netspeed = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (NETSPEED_POSITION[dbtype]-1)));
++ if (!record->netspeed)
++ {
++ record->netspeed = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (NETSPEED_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->netspeed = strdup(NOT_SUPPORTED);
++ if (!record->netspeed)
++ {
++ record->netspeed = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & IDDCODE) && (IDDCODE_POSITION[dbtype] != 0))
+ {
+- record->iddcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (IDDCODE_POSITION[dbtype]-1)));
++ if (!record->iddcode)
++ {
++ record->iddcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (IDDCODE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->iddcode = strdup(NOT_SUPPORTED);
++ if (!record->iddcode)
++ {
++ record->iddcode = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & AREACODE) && (AREACODE_POSITION[dbtype] != 0))
+ {
+- record->areacode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (AREACODE_POSITION[dbtype]-1)));
++ if (!record->areacode)
++ {
++ record->areacode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (AREACODE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->areacode = strdup(NOT_SUPPORTED);
++ if (!record->areacode)
++ {
++ record->areacode = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & WEATHERSTATIONCODE) && (WEATHERSTATIONCODE_POSITION[dbtype] != 0))
+ {
+- record->weatherstationcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (WEATHERSTATIONCODE_POSITION[dbtype]-1)));
++ if (!record->weatherstationcode)
++ {
++ record->weatherstationcode = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (WEATHERSTATIONCODE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->weatherstationcode = strdup(NOT_SUPPORTED);
++ if (!record->weatherstationcode)
++ {
++ record->weatherstationcode = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & WEATHERSTATIONNAME) && (WEATHERSTATIONNAME_POSITION[dbtype] != 0))
+ {
+- record->weatherstationname = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (WEATHERSTATIONNAME_POSITION[dbtype]-1)));
++ if (!record->weatherstationname)
++ {
++ record->weatherstationname = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (WEATHERSTATIONNAME_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->weatherstationname = strdup(NOT_SUPPORTED);
++ if (!record->weatherstationname)
++ {
++ record->weatherstationname = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & MCC) && (MCC_POSITION[dbtype] != 0))
+ {
+- record->mcc = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MCC_POSITION[dbtype]-1)));
++ if (!record->mcc)
++ {
++ record->mcc = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MCC_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->mcc = strdup(NOT_SUPPORTED);
++ if (!record->mcc)
++ {
++ record->mcc = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & MNC) && (MNC_POSITION[dbtype] != 0))
+ {
+- record->mnc = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MNC_POSITION[dbtype]-1)));
++ if (!record->mnc)
++ {
++ record->mnc = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MNC_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->mnc = strdup(NOT_SUPPORTED);
++ if (!record->mnc)
++ {
++ record->mnc = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & MOBILEBRAND) && (MOBILEBRAND_POSITION[dbtype] != 0))
+ {
+- record->mobilebrand = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MOBILEBRAND_POSITION[dbtype]-1)));
++ if (!record->mobilebrand)
++ {
++ record->mobilebrand = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (MOBILEBRAND_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->mobilebrand = strdup(NOT_SUPPORTED);
++ if (!record->mobilebrand)
++ {
++ record->mobilebrand = strdup(NOT_SUPPORTED);
++ }
+ }
+
+ if ((mode & ELEVATION) && (ELEVATION_POSITION[dbtype] != 0))
+ {
+ char *mem = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (ELEVATION_POSITION[dbtype]-1)));
+- record->elevation = atof(mem);
+- free(mem);
++ record->elevation = atof(mem);
++ free(mem);
+ }
+ else
+ {
+@@ -554,11 +650,17 @@ static IP2LocationRecord *IP2Location_read_record(IP2Location *loc, uint32_t row
+
+ if ((mode & USAGETYPE) && (USAGETYPE_POSITION[dbtype] != 0))
+ {
+- record->usagetype = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (USAGETYPE_POSITION[dbtype]-1)));
++ if (!record->usagetype)
++ {
++ record->usagetype = IP2Location_readStr(handle, IP2Location_read32(handle, rowaddr + 4 * (USAGETYPE_POSITION[dbtype]-1)));
++ }
+ }
+ else
+ {
+- record->usagetype = strdup(NOT_SUPPORTED);
++ if (!record->usagetype)
++ {
++ record->usagetype = strdup(NOT_SUPPORTED);
++ }
+ }
+ return record;
+ }
+@@ -658,7 +760,7 @@ static IP2LocationRecord *IP2Location_get_ipv4_record(IP2Location *loc, char *ip
+ {
+ mid = (uint32_t)((low + high) >> 1);
+ ipfrom = IP2Location_read32(handle, baseaddr + mid * dbcolumn * 4);
+- ipto = IP2Location_read32(handle, baseaddr + (mid + 1) * dbcolumn * 4);
++ ipto = IP2Location_read32(handle, baseaddr + (mid + 1) * dbcolumn * 4);
+
+ if ((ipno >= ipfrom) && (ipno < ipto))
+ {
+@@ -683,17 +785,17 @@ static IP2LocationRecord *IP2Location_get_ipv4_record(IP2Location *loc, char *ip
+ static IP2LocationRecord *IP2Location_get_record(IP2Location *loc, char *ipstring, uint32_t mode)
+ {
+ ipv_t parsed_ipv = IP2Location_parse_addr(ipstring);
+- if (parsed_ipv.ipversion == 4)
+- {
+- //process IPv4
+- return IP2Location_get_ipv4_record(loc, ipstring, mode, parsed_ipv);
+- }
++ if (parsed_ipv.ipversion == 4)
++ {
++ //process IPv4
++ return IP2Location_get_ipv4_record(loc, ipstring, mode, parsed_ipv);
++ }
+ if (parsed_ipv.ipversion == 6)
+ {
+- //process IPv6
++ //process IPv6
+ return IP2Location_get_ipv6_record(loc, ipstring, mode, parsed_ipv);
+ }
+- else
++ else
+ {
+ return IP2Location_bad_record(INVALID_IPV4_ADDRESS);
+ }
+diff --git a/libIP2Location/IP2Location.h b/libIP2Location/IP2Location.h
+index b425362..34e9ada 100644
+--- libIP2Location/IP2Location.h
++++ libIP2Location/IP2Location.h
+@@ -56,7 +56,7 @@ extern "C" {
+ #include "IP2Loc_DBInterface.h"
+
+ /* API version changes only if functions are added (release) or changed (minor/major) */
+-#define API_VERSION 8.0.8
++#define API_VERSION 8.0.9
+
+
+ #define API_VERSION_MAJOR 8