Index: lib/libc/gen/getgrent.c =================================================================== --- lib/libc/gen/getgrent.c +++ lib/libc/gen/getgrent.c @@ -1173,8 +1173,10 @@ * terminator, alignment padding, and one (char *) * pointer for the member list terminator. */ - if (resultlen >= bufsize - _ALIGNBYTES - sizeof(char *)) + if (resultlen >= bufsize - _ALIGNBYTES - sizeof(char *)) { + free(result); goto erange; + } memcpy(buffer, result, resultlen); buffer[resultlen] = '\0'; free(result); Index: lib/libc/gen/getpwent.c =================================================================== --- lib/libc/gen/getpwent.c +++ lib/libc/gen/getpwent.c @@ -1392,8 +1392,10 @@ continue; } } - if (resultlen >= bufsize) + if (resultlen >= bufsize) { + free(result); goto erange; + } memcpy(buffer, result, resultlen); buffer[resultlen] = '\0'; free(result);