mirror of git://sourceware.org/git/glibc.git
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>
(cherry picked from commit 949ad78a18)
This commit is contained in:
parent
e369114462
commit
8a82a76a42
1
NEWS
1
NEWS
|
|
@ -27,6 +27,7 @@ The following bugs are resolved with this release:
|
|||
[25812] Libio vtable protection is sometimes only partially enforced
|
||||
[27576] gmon: improve mcount overflow handling
|
||||
[27821] ungetc: Fix backup buffer leak on program exit
|
||||
[28815] realpath should not copy to resolved buffer on error
|
||||
[28838] FAIL: elf/tst-p_align3
|
||||
[28846] CMSG_NXTHDR may trigger -Wstrict-overflow warning
|
||||
[28850] linux: __get_nprocs_sched reads uninitialized memory from the stack
|
||||
|
|
|
|||
|
|
@ -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