mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
Fix endless loop with invalid /etc/shells file.
This commit is contained in:
parent
1a36db1c12
commit
caa6e77293
@ -1,3 +1,9 @@
|
|||||||
|
2010-02-03 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #11242]
|
||||||
|
* misc/getusershell.c (initshells): Allocate one more byte in input
|
||||||
|
buffer so that fgets doesn't loop undefinitely.
|
||||||
|
|
||||||
2010-02-02 Ulrich Drepper <drepper@redhat.com>
|
2010-02-02 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* stdlib/setenv.c (__add_to_environ): Don't use alloca if
|
* stdlib/setenv.c (__add_to_environ): Don't use alloca if
|
||||||
|
@ -116,7 +116,8 @@ initshells()
|
|||||||
}
|
}
|
||||||
if (statb.st_size > ~(size_t)0 / sizeof (char *) * 3)
|
if (statb.st_size > ~(size_t)0 / sizeof (char *) * 3)
|
||||||
goto init_okshells;
|
goto init_okshells;
|
||||||
if ((strings = malloc(statb.st_size + 2)) == NULL)
|
flen = statb.st_size + 3;
|
||||||
|
if ((strings = malloc(flen)) == NULL)
|
||||||
goto init_okshells;
|
goto init_okshells;
|
||||||
shells = malloc(statb.st_size / 3 * sizeof (char *));
|
shells = malloc(statb.st_size / 3 * sizeof (char *));
|
||||||
if (shells == NULL) {
|
if (shells == NULL) {
|
||||||
@ -126,7 +127,6 @@ initshells()
|
|||||||
}
|
}
|
||||||
sp = shells;
|
sp = shells;
|
||||||
cp = strings;
|
cp = strings;
|
||||||
flen = statb.st_size + 2;
|
|
||||||
while (fgets_unlocked(cp, flen - (cp - strings), fp) != NULL) {
|
while (fgets_unlocked(cp, flen - (cp - strings), fp) != NULL) {
|
||||||
while (*cp != '#' && *cp != '/' && *cp != '\0')
|
while (*cp != '#' && *cp != '/' && *cp != '\0')
|
||||||
cp++;
|
cp++;
|
||||||
|
Loading…
Reference in New Issue
Block a user