Fix some regressions in the 1.18 reboot of development.
PR: 247529 Submitted by: vvd@unislabs.com daniel.engberg.lists@pyret.net Reported by: tobik MFH: 2020Q3
This commit is contained in:
parent
11d8891e71
commit
6ee99960b0
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=541348
@ -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>
|
||||
|
55
devel/popt/files/patch-src_popt.c
Normal file
55
devel/popt/files/patch-src_popt.c
Normal file
@ -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);
|
10
devel/popt/files/patch-src_poptint.h
Normal file
10
devel/popt/files/patch-src_poptint.h
Normal file
@ -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;
|
Loading…
Reference in New Issue
Block a user