Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37540745
en ru br
ALT Linux repositórios
S:1.18-alt1
5.0: 1.14-alt4
4.1: 1.14-alt2
4.0: 1.7-alt16
3.0: 1.7-alt13

Group :: Sistema/Bibliotecas
RPM: libpopt

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: popt-1.18-alt-alloc-checks.patch
Download


diff --git a/popt/src/popt.c b/popt/src/popt.c
index 2db2bbd..54a217c 100644
--- a/popt/src/popt.c
+++ b/popt/src/popt.c
@@ -154,8 +154,11 @@ static void invokeCallbacksOPTION(poptContext con,
 poptContext poptGetContext(const char * name, int argc, const char ** argv,
 			const struct poptOption * options, unsigned int flags)
 {
-    poptContext con = malloc(sizeof(*con));
+    poptContext con;
 
+    if (argc < 1) return NULL;
+
+    con = malloc(sizeof(*con));
     if (con == NULL) return NULL;	/* XXX can't happen */
     memset(con, 0, sizeof(*con));
 
@@ -177,6 +180,7 @@ poptContext poptGetContext(const char * name, int argc, const char ** argv,
     con->execFail = NULL;
     con->finalArgvAlloced = argc * 2;
     con->finalArgv = calloc( (size_t)con->finalArgvAlloced, sizeof(*con->finalArgv) );
+    if (con->finalArgv == NULL) con->finalArgvAlloced = 0;
     con->execAbsolute = 1;
     con->arg_strip = NULL;
 
@@ -264,6 +268,7 @@ static int handleExec(poptContext con,
 	con->finalArgvAlloced += 10;
 	con->finalArgv = realloc(con->finalArgv,
 			sizeof(*con->finalArgv) * con->finalArgvAlloced);
+	if (con->finalArgv == NULL) con->finalArgvCount = con->finalArgvAlloced = 0;
     }
 
     i = con->finalArgvCount++;
@@ -1429,6 +1434,7 @@ int poptGetNextOpt(poptContext con)
 	    con->finalArgvAlloced += 10;
 	    con->finalArgv = realloc(con->finalArgv,
 			    sizeof(*con->finalArgv) * con->finalArgvAlloced);
+	    if (con->finalArgv == NULL) con->finalArgvCount = con->finalArgvAlloced = 0;
 	}
 
 	if (con->finalArgv != NULL)
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009