Index: head/devel/popt/Makefile =================================================================== --- head/devel/popt/Makefile (revision 541347) +++ head/devel/popt/Makefile (revision 541348) @@ -1,29 +1,30 @@ # Created by: Yuan-Chen Cheng # $FreeBSD$ PORTNAME= popt PORTVERSION= 1.18 +PORTREVISION= 1 CATEGORIES= devel MASTER_SITES= http://ftp.rpm.org/popt/releases/popt-1.x/ MAINTAINER= jpaetzel@FreeBSD.org COMMENT= Getopt(3) like library with a number of enhancements, from Redhat LICENSE= MIT LICENSE_FILE= ${WRKSRC}/COPYING USES= iconv libtool pathfix TEST_TARGET= check OPTIONS_DEFINE= NLS GNU_CONFIGURE= yes INSTALL_TARGET= install-strip USE_LDCONFIG= yes NLS_CONFIGURE_ENABLE= nls -NLS_USES= gettext +NLS_USES= gettext-runtime localbase OPTIONS_SUB= yes .include Index: head/devel/popt/files/patch-src_popt.c =================================================================== --- head/devel/popt/files/patch-src_popt.c (nonexistent) +++ head/devel/popt/files/patch-src_popt.c (revision 541348) @@ -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); Property changes on: head/devel/popt/files/patch-src_popt.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/devel/popt/files/patch-src_poptint.h =================================================================== --- head/devel/popt/files/patch-src_poptint.h (nonexistent) +++ head/devel/popt/files/patch-src_poptint.h (revision 541348) @@ -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; Property changes on: head/devel/popt/files/patch-src_poptint.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property