aboutsummaryrefslogtreecommitdiff
path: root/devel
diff options
context:
space:
mode:
authorJosh Paetzel <jpaetzel@FreeBSD.org>2020-07-09 14:01:07 +0000
committerJosh Paetzel <jpaetzel@FreeBSD.org>2020-07-09 14:01:07 +0000
commitf55a462f0785bc5d476fe6a366816ddd32bd6944 (patch)
treec04eb612c308c0266aac90c2db9d3372b8ed7991 /devel
parent6739cf131c3a2dc3154a8996fb3e4b15369ef6df (diff)
downloadports-f55a462f0785bc5d476fe6a366816ddd32bd6944.tar.gz
ports-f55a462f0785bc5d476fe6a366816ddd32bd6944.zip
Notes
Diffstat (limited to 'devel')
-rw-r--r--devel/popt/Makefile3
-rw-r--r--devel/popt/files/patch-src_popt.c55
-rw-r--r--devel/popt/files/patch-src_poptint.h10
3 files changed, 67 insertions, 1 deletions
diff --git a/devel/popt/Makefile b/devel/popt/Makefile
index c718b92f4170..87be44c9bd7e 100644
--- a/devel/popt/Makefile
+++ b/devel/popt/Makefile
@@ -3,6 +3,7 @@
PORTNAME= popt
PORTVERSION= 1.18
+PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= http://ftp.rpm.org/popt/releases/popt-1.x/
@@ -23,7 +24,7 @@ INSTALL_TARGET= install-strip
USE_LDCONFIG= yes
NLS_CONFIGURE_ENABLE= nls
-NLS_USES= gettext
+NLS_USES= gettext-runtime localbase
OPTIONS_SUB= yes
.include <bsd.port.mk>
diff --git a/devel/popt/files/patch-src_popt.c b/devel/popt/files/patch-src_popt.c
new file mode 100644
index 000000000000..2b679be9a987
--- /dev/null
+++ b/devel/popt/files/patch-src_popt.c
@@ -0,0 +1,55 @@
+--- src/popt.c.orig 2020-05-18 07:43:13 UTC
++++ src/popt.c
+@@ -168,6 +168,7 @@ poptContext poptGetContext(const char * name, int argc
+ con->os->next = 1; /* skip argv[0] */
+
+ con->leftovers = calloc( (size_t)(argc + 1), sizeof(*con->leftovers) );
++ con->allocLeftovers = argc + 1;
+ con->options = options;
+ con->aliases = NULL;
+ con->numAliases = 0;
+@@ -1269,8 +1270,21 @@ int poptGetNextOpt(poptContext con)
+ con->os->nextArg = xstrdup(origOptString);
+ return 0;
+ }
+- if (con->leftovers != NULL) /* XXX can't happen */
+- con->leftovers[con->numLeftovers++] = origOptString;
++ if (con->leftovers != NULL) { /* XXX can't happen */
++ /* One might think we can never overflow the leftovers
++ array. Actually, that's true, as long as you don't
++ use poptStuffArgs()... */
++ if ((con->numLeftovers + 1) >= (con->allocLeftovers)) {
++ con->allocLeftovers += 10;
++ con->leftovers =
++ realloc(con->leftovers,
++ sizeof(*con->leftovers) * con->allocLeftovers);
++ }
++ con->leftovers[con->numLeftovers++]
++ = xstrdup(origOptString); /* so a free of a stuffed
++ argv doesn't give us a
++ dangling pointer */
++ }
+ continue;
+ }
+
+@@ -1519,6 +1533,8 @@ poptItem poptFreeItems(poptItem items, int nitems)
+
+ poptContext poptFreeContext(poptContext con)
+ {
++ int i;
++
+ if (con == NULL) return con;
+ poptResetContext(con);
+
+@@ -1528,7 +1544,11 @@ poptContext poptFreeContext(poptContext con)
+ con->execs = poptFreeItems(con->execs, con->numExecs);
+ con->numExecs = 0;
+
++ for (i = 0; i < con->numLeftovers; i++) {
++ con->leftovers[i] = _free(&con->leftovers[i]);
++ }
+ con->leftovers = _free(con->leftovers);
++
+ con->finalArgv = _free(con->finalArgv);
+ con->appName = _free(con->appName);
+ con->otherHelp = _free(con->otherHelp);
diff --git a/devel/popt/files/patch-src_poptint.h b/devel/popt/files/patch-src_poptint.h
new file mode 100644
index 000000000000..5d3cd38c8159
--- /dev/null
+++ b/devel/popt/files/patch-src_poptint.h
@@ -0,0 +1,10 @@
+--- src/poptint.h.orig 2020-05-18 07:43:13 UTC
++++ src/poptint.h
+@@ -94,6 +94,7 @@ struct poptContext_s {
+ struct optionStackEntry * os;
+ poptArgv leftovers;
+ int numLeftovers;
++ int allocLeftovers;
+ int nextLeftover;
+ const struct poptOption * options;
+ int restLeftover;