Handle out of memory conditions.

malloc and realloc could return NULL when no memory is available.
The code doesn't handle errors, so use xmalloc/xrealloc instead.

While at it, sync alloclen's type with len's type, so both are ssize_t.
This commit is contained in:
Tobias Stoeckmann 2015-07-11 21:28:47 +02:00
parent 5e73c83262
commit 30986cb22e

6
pwdx.c
View File

@ -65,7 +65,7 @@ int main(int argc, char *argv[])
{ {
int ch; int ch;
int retval = 0, i; int retval = 0, i;
int alloclen = 128; ssize_t alloclen = 128;
char *pathbuf; char *pathbuf;
static const struct option longopts[] = { static const struct option longopts[] = {
@ -99,7 +99,7 @@ int main(int argc, char *argv[])
if (argc == 0) if (argc == 0)
usage(stderr); usage(stderr);
pathbuf = malloc(alloclen); pathbuf = xmalloc(alloclen);
for (i = 0; i < argc; i++) { for (i = 0; i < argc; i++) {
char *s; char *s;
@ -128,7 +128,7 @@ int main(int argc, char *argv[])
*/ */
while ((len = readlink(buf, pathbuf, alloclen)) == alloclen) { while ((len = readlink(buf, pathbuf, alloclen)) == alloclen) {
alloclen *= 2; alloclen *= 2;
pathbuf = realloc(pathbuf, alloclen); pathbuf = xrealloc(pathbuf, alloclen);
} }
free(buf); free(buf);