1
0
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:
Siddhesh Poyarekar
2017-01-20 00:45:09 +05:30
parent 3a66b2b063
commit 41389c4049
4 changed files with 69 additions and 2 deletions

View File

@ -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;