mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-30 12:31:53 +08:00
realpath: Do not copy result on failure (BZ #28815)
On failure, the contents of the resolved buffer passed in by the caller to realpath are undefined. Do not copy any partial resolution to the buffer and also do not test resolved contents in test-canon.c. Resolves: BZ #28815 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
b98d0bbf74
commit
949ad78a18
@ -400,11 +400,11 @@ realpath_stk (const char *name, char *resolved,
|
||||
|
||||
error:
|
||||
*dest++ = '\0';
|
||||
if (resolved != NULL)
|
||||
if (!failed && resolved != NULL)
|
||||
{
|
||||
if (dest - rname <= get_path_max ())
|
||||
rname = strcpy (resolved, rname);
|
||||
else if (!failed)
|
||||
else
|
||||
{
|
||||
failed = true;
|
||||
__set_errno (ENAMETOOLONG);
|
||||
|
@ -174,7 +174,9 @@ do_test (int argc, char ** argv)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!check_path (buf, tests[i].out ? tests[i].out : tests[i].resolved))
|
||||
/* Only on success verify that buf contains the result too. */
|
||||
if (result != NULL
|
||||
&& !check_path (buf, tests[i].out ? tests[i].out : tests[i].resolved))
|
||||
{
|
||||
printf ("%s: flunked test %d (expected resolved `%s', got `%s')\n",
|
||||
argv[0], i, tests[i].out ? tests[i].out : tests[i].resolved,
|
||||
|
Loading…
Reference in New Issue
Block a user