fix mishandling of ENOMEM return case in internal getgrent_a function
due to an incorrect return statement in this error case, the previously blocked cancellation state was not restored and no result was stored. this could lead to invalid (read) accesses in the caller resulting in crashes or nonsensical result data in the event of memory exhaustion.
This commit is contained in:
@@ -48,7 +48,8 @@ int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***m
|
||||
rv = errno;
|
||||
free(*line);
|
||||
*line = 0;
|
||||
return 0;
|
||||
gr = 0;
|
||||
goto end;
|
||||
}
|
||||
if (*mems) {
|
||||
mem[0][0] = mems;
|
||||
|
||||
Reference in New Issue
Block a user