Group :: Sistema/Bibliotecas
RPM: libpopt
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: popt-20020315-alt-alloc-checks.patch
Download
Download
diff -ur popt-20020315~/popt.c popt-20020315/popt.c
--- popt-20020315~/popt.c Fri Mar 15 09:29:44 2002
+++ popt-20020315/popt.c Mon Mar 25 14:01:51 2002
@@ -153,6 +153,8 @@
if (con == NULL) return NULL; /* XXX can't happen */
memset(con, 0, sizeof(*con));
+ if ( argc < 1 ) return NULL;
+
con->os = con->optionStack;
con->os->argc = argc;
/*@-dependenttrans -assignexpose@*/ /* FIX: W2DO? */
@@ -174,6 +176,7 @@
con->numExecs = 0;
con->finalArgvAlloced = argc * 2;
con->finalArgv = calloc( con->finalArgvAlloced, sizeof(*con->finalArgv) );
+ if ( !con->finalArgv ) con->finalArgvAlloced = 0; /* XXX can't happen? */
con->execAbsolute = 1;
con->arg_strip = NULL;
@@ -273,6 +276,7 @@
con->finalArgvAlloced += 10;
con->finalArgv = realloc(con->finalArgv,
sizeof(*con->finalArgv) * con->finalArgvAlloced);
+ if ( !con->finalArgv ) con->finalArgvCount = con->finalArgvAlloced = 0; /* XXX can't happen? */
}
i = con->finalArgvCount++;
@@ -569,6 +573,7 @@
tn += alen;
*te = '\0';
t = realloc(t, tn);
+ if ( !t ) return NULL; /* XXX can't happen? */
te = t + strlen(t);
strncpy(te, a, alen); te += alen;
continue;
@@ -933,6 +938,7 @@
con->finalArgvAlloced += 10;
con->finalArgv = realloc(con->finalArgv,
sizeof(*con->finalArgv) * con->finalArgvAlloced);
+ if ( !con->finalArgv ) con->finalArgvCount = con->finalArgvAlloced = 0; /* XXX can't happen? */
}
if (con->finalArgv != NULL)