glibc/io
Dmitry V. Levin 52a713fdd0 linux: make getcwd(3) fail if it cannot obtain an absolute path [BZ #22679]
Currently getcwd(3) can succeed without returning an absolute path
because the underlying getcwd syscall, starting with linux commit
v2.6.36-rc1~96^2~2, may succeed without returning an absolute path.

This is a conformance issue because "The getcwd() function shall
place an absolute pathname of the current working directory
in the array pointed to by buf, and return buf".

This is also a security issue because a non-absolute path returned
by getcwd(3) causes a buffer underflow in realpath(3).

Fix this by checking the path returned by getcwd syscall and falling
back to generic_getcwd if the path is not absolute, effectively making
getcwd(3) fail with ENOENT.  The error code is chosen for consistency
with the case when the current directory is unlinked.

[BZ #22679]
CVE-2018-1000001
* sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Fall back to
generic_getcwd if the path returned by getcwd syscall is not absolute.
* io/tst-getcwd-abspath.c: New test.
* io/Makefile (tests): Add tst-getcwd-abspath.
2018-01-12 14:49:49 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sys Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
access.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-ftw1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-ftw2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-ftw3.c
bug-ftw4.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-ftw5.c [BZ #4076] 2007-02-21 09:36:46 +00:00
chdir.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
chmod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
chown.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
close.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
copy_file_range-compat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
copy_file_range.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
creat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
creat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dup2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dup3.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
euidaccess.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
faccessat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchdir.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchmod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchmodat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchown.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchownat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fcntl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fcntl.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
flock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatfs64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatvfs64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstatvfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fts64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fts.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fts.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftw64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftw.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftw.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftwtest-sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftwtest.c
futimens.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fxstat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fxstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fxstatat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fxstatat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getcwd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getdirname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getwd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isatty.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lchmod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lchown.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
link.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
linkat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lockf64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lockf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lseek64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lseek.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lstat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lxstat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lxstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile linux: make getcwd(3) fail if it cannot obtain an absolute path [BZ #22679] 2018-01-12 14:49:49 +00:00
mkdir.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkdirat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkfifo.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkfifoat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mknod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mknodat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
open64_2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
open64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
open_2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
open.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
openat64_2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
openat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
openat_2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
openat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pipe2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pipe.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
poll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
poll.h
posix_fadvise64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
posix_fadvise.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
posix_fallocate64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
posix_fallocate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ppoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pwd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
read.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
readlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
readlinkat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rmdir.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sendfile64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sendfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
statfs64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
statfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
statvfs64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
statvfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
symlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
symlinkat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-lfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-stat2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-stat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-utime.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-copy_file_range-compat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-copy_file_range.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-faccessat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-fchmodat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-fchownat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-fcntl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fstatat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-fts-lfs.c Add LFS support for fts functions (bug 11460) 2015-11-06 11:24:16 +01:00
tst-fts.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-futimesat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-getcwd-abspath.c linux: make getcwd(3) fail if it cannot obtain an absolute path [BZ #22679] 2018-01-12 14:49:49 +00:00
tst-getcwd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-linkat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-mkdirat.c Assume that _DIRENT_HAVE_D_TYPE is always defined. 2017-10-30 15:48:33 +01:00
tst-mkfifoat.c Assume that _DIRENT_HAVE_D_TYPE is always defined. 2017-10-30 15:48:33 +01:00
tst-mknodat.c Assume that _DIRENT_HAVE_D_TYPE is always defined. 2017-10-30 15:48:33 +01:00
tst-open-tmpfile.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-openat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-posix_fallocate64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-posix_fallocate-common.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-posix_fallocate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-readlinkat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-renameat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-statvfs.c
tst-symlinkat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
tst-ttyname_r.c * nis/nis_subr.c (nis_getnames): Revert last change. 2006-12-05 21:28:15 +00:00
tst-unlinkat.c Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
ttyname_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ttyname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
umask.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unlinkat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utime.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utime.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utimensat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Versions copy_file_range: New function to copy file data 2017-12-22 10:55:40 +01:00
write.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmknod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmknodat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xstat64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00