1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:28:12 +00:00
serenity/Userland/Libraries/LibC
Ben Wiederhake 5dc29065e1 LibC: Avoid silent truncation after overlong realpath
The realpath syscall can attempt to return arbitrarily long paths, in particular
paths that are longer than PATH_MAX. The only way to detect this case is
checking whether 'rc', the true length of the returned path including NUL byte,
exceeds our buffer length. In such a case, the buffer contains invalid data.

All Serenity code calls LibC's realpath() with a nullptr buffer, meaning that
realpath is supposed to allocate memory on its own. All Serenity code can handle
arbitrarily long paths returned by LibC's realpath, so it is safe to "do the
dance" and repeat the syscall with a new buffer.

Ports are likely to be graceful in this regard, too. If a Port calls realpath()
with a pre-allocated buffer, however, there is nothing better we can do than
return a truncated buffer.
2021-01-16 22:40:53 +01:00
..
arpa Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
bits Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
net Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
netinet Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
sys Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
alloca.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
assert.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
assert.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
byteswap.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
CMakeLists.txt Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
crt0.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
crt0_shared.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
crti.S Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
crtn.S Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ctype.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ctype.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
cxxabi.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
dirent.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
dirent.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
dlfcn.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
dlfcn.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
endian.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
errno.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
errno_numbers.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
fcntl.cpp LibC+Everywhere: Remove open_with_path_length() in favor of open() 2021-01-12 23:34:01 +01:00
fcntl.h LibC+Everywhere: Remove open_with_path_length() in favor of open() 2021-01-12 23:34:01 +01:00
fd_set.h LibC: Bump FD_SETSIZE to 1024 2021-01-16 11:26:53 +01:00
float.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
getopt.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
getopt.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
grp.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
grp.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
iconv.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
inttypes.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ioctl.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
libcinit.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
libgen.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
libgen.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
limits.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
locale.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
locale.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
malloc.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
mallocdefs.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
memory.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
mman.cpp Kernel: Remove unused syscall sys$minherit() 2021-01-16 14:52:04 +01:00
mman.h Kernel: Remove unused syscall sys$minherit() 2021-01-16 14:52:04 +01:00
mntent.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
mntent.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
netdb.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
netdb.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
paths.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
poll.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
poll.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
pwd.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
pwd.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
qsort.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
regex.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
scanf.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
sched.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
sched.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
serenity.cpp Kernel+LibC+WindowServer: Remove unused thread/process boost mechanism 2021-01-16 14:52:04 +01:00
serenity.h Kernel+LibC+WindowServer: Remove unused thread/process boost mechanism 2021-01-16 14:52:04 +01:00
setjmp.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
setjmp.S Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
signal.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
signal.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
signal_numbers.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
spawn.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
spawn.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ssp.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stat.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdarg.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdbool.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stddef.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdint.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdio.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdio.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
stdlib.cpp LibC: Avoid silent truncation after overlong realpath 2021-01-16 22:40:53 +01:00
stdlib.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
string.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
string.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
strings.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
strings.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
syslog.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
syslog.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
termcap.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
termcap.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
termios.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
termios.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
time.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
time.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
times.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ulimit.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ulimit.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
unistd.cpp LibC: Fix memory leak in getcwd 2021-01-16 22:40:53 +01:00
unistd.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
utime.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
utime.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
utmp.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
utsname.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
wchar.cpp Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
wchar.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00