diff options
author | Josh Paetzel <jpaetzel@FreeBSD.org> | 2020-07-09 14:01:07 +0000 |
---|---|---|
committer | Josh Paetzel <jpaetzel@FreeBSD.org> | 2020-07-09 14:01:07 +0000 |
commit | f55a462f0785bc5d476fe6a366816ddd32bd6944 (patch) | |
tree | c04eb612c308c0266aac90c2db9d3372b8ed7991 /devel | |
parent | 6739cf131c3a2dc3154a8996fb3e4b15369ef6df (diff) | |
download | ports-f55a462f0785bc5d476fe6a366816ddd32bd6944.tar.gz ports-f55a462f0785bc5d476fe6a366816ddd32bd6944.zip |
Notes
Diffstat (limited to 'devel')
-rw-r--r-- | devel/popt/Makefile | 3 | ||||
-rw-r--r-- | devel/popt/files/patch-src_popt.c | 55 | ||||
-rw-r--r-- | devel/popt/files/patch-src_poptint.h | 10 |
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; |