Index: lib/libkvm/kvm_proc.c =================================================================== --- lib/libkvm/kvm_proc.c +++ lib/libkvm/kvm_proc.c @@ -666,6 +666,7 @@ static char *buf, *p; static char **bufp; static int argc; + char **nbufp; if (!ISALIVE(kd)) { _kvm_err(kd, kd->program, @@ -681,9 +682,15 @@ _kvm_err(kd, kd->program, "cannot allocate memory"); return (NULL); } + bufp = malloc(sizeof(char *) * argc); + if (bufp == NULL) { + free(buf); + buf = NULL; + _kvm_err(kd, kd->program, "cannot allocate memory"); + return (NULL); + } buflen = nchr; argc = 32; - bufp = malloc(sizeof(char *) * argc); } else if (nchr > buflen) { p = realloc(buf, nchr); if (p != NULL) { @@ -716,12 +723,10 @@ p += strlen(p) + 1; if (i >= argc) { argc += argc; - bufp = reallocf(bufp, - sizeof(char *) * argc); - if (bufp == NULL) { - buflen = 0; + nbufp = realloc(bufp, sizeof(char *) * argc); + if (nbufp == NULL) return (NULL); - } + bufp = nbufp; } } while (p < buf + bufsz); bufp[i++] = 0;