mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Fix environment traversal when an envvar value is empty
The condition when the value of an envvar is empty (not just '\0'), the loop in tunables_init gets stuck infinitely because envp is not incremented. Fix that by always incrementing envp in the loop. Added test case (tst-empty-env.c) verifies the fix when the source is configured with --enable-hardcoded-path-in-tests, thanks Josh Stone for providing the test case. Verified on x86_64. * elf/dl-tunables (get_next_env): Always advance envp. * stdlib/tst-empty-env.c: New test case. * stdlib/Makefile (tests): Use it.
This commit is contained in:
@ -80,7 +80,7 @@ get_next_env (char **envp, char **name, size_t *namelen, char **val)
|
||||
{
|
||||
while (envp != NULL && *envp != NULL)
|
||||
{
|
||||
char *envline = *envp;
|
||||
char *envline = *envp++;
|
||||
int len = 0;
|
||||
|
||||
while (envline[len] != '\0' && envline[len] != '=')
|
||||
@ -94,7 +94,7 @@ get_next_env (char **envp, char **name, size_t *namelen, char **val)
|
||||
*namelen = len;
|
||||
*val = &envline[len + 1];
|
||||
|
||||
return ++envp;
|
||||
return envp;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
Reference in New Issue
Block a user