glibc/io
Dmitry V. Levin 771c846a71 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.

(cherry picked from commit 52a713fdd0)
2018-01-16 09:07:08 +01:00
..
bits Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sys Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
access.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
bug-ftw1.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
bug-ftw2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
bug-ftw3.c
bug-ftw4.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
bug-ftw5.c
chdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
chmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
chown.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
close.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
creat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
creat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dup2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dup3.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dup.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
euidaccess.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
faccessat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchmodat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchown.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchownat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fcntl.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fcntl.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
flock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatfs64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatfs.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatvfs64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fstatvfs.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fts64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fts.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fts.h fts: Fix symbol redirect for fts_set [BZ #21289] 2017-03-31 09:30:52 +02:00
ftw64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ftw.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ftw.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ftwtest-sh Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ftwtest.c
futimens.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fxstat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fxstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fxstatat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fxstatat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getcwd.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getdirname.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getwd.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
have_o_cloexec.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
isatty.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lchmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lchown.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
link.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
linkat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lockf64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lockf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lseek64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lseek.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lstat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lxstat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lxstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Makefile linux: make getcwd(3) fail if it cannot obtain an absolute path [BZ #22679] 2018-01-16 09:07:08 +01:00
mkdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mkdirat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mkfifo.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mkfifoat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mknod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mknodat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
open64_2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
open64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
open_2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
open.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
openat64_2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
openat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
openat_2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
openat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
pipe2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
pipe.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
poll.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
poll.h
posix_fadvise64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
posix_fadvise.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
posix_fallocate64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
posix_fallocate.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ppoll.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
pwd.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
read.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
readlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
readlinkat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
rmdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sendfile64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sendfile.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
stat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
stat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
statfs64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
statfs.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
statvfs64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
statvfs.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
symlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
symlinkat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
test-lfs.c Fix MIPS n32 lseek, lseek64 (bug 21019). 2017-01-02 23:09:25 +00:00
test-stat2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
test-stat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
test-utime.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-faccessat.c
tst-fchmodat.c
tst-fchownat.c
tst-fcntl.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-fstatat.c
tst-fts-lfs.c
tst-fts.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-futimesat.c
tst-getcwd-abspath.c linux: make getcwd(3) fail if it cannot obtain an absolute path [BZ #22679] 2018-01-16 09:07:08 +01:00
tst-getcwd.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-linkat.c
tst-mkdirat.c
tst-mkfifoat.c
tst-mknodat.c
tst-open-tmpfile.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-openat.c
tst-posix_fallocate64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-posix_fallocate-common.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-posix_fallocate.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tst-readlinkat.c
tst-renameat.c
tst-statvfs.c
tst-symlinkat.c
tst-ttyname_r.c
tst-unlinkat.c
ttyname_r.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ttyname.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
umask.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
unlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
unlinkat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
utime.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
utime.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
utimensat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Versions
write.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmknod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmknodat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstat64.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00