1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-31 10:12:45 +00:00
serenity/Kernel/Syscalls
Daniel Bertalan d7b6cc6421 Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr
Our existing implementation did not check the element type of the other
pointer in the constructors and move assignment operators. This meant
that some operations that would require explicit casting on raw pointers
were done implicitly, such as:
- downcasting a base class to a derived class (e.g. `Kernel::Inode` =>
  `Kernel::ProcFSDirectoryInode` in Kernel/ProcFS.cpp),
- casting to an unrelated type (e.g. `Promise<bool>` => `Promise<Empty>`
  in LibIMAP/Client.cpp)

This, of course, allows gross violations of the type system, and makes
the need to type-check less obvious before downcasting. Luckily, while
adding the `static_ptr_cast`s, only two truly incorrect usages were
found; in the other instances, our casts just needed to be made
explicit.
2021-09-03 23:20:23 +02:00
..
access.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
alarm.cpp Kernel: Do not cancel stale timers when servicing sys$alarm 2021-08-03 18:44:01 +02:00
anon_create.cpp Kernel: Rename FileDescription::create() => try_create() 2021-08-29 01:09:19 +02:00
beep.cpp Kernel: Disable big process lock for sys$beep() 2021-08-06 23:36:12 +02:00
chdir.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
chmod.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
chown.cpp Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
clock.cpp Kernel+LibC: Allow clock_gettime() to run without syscalls 2021-08-10 19:21:16 +02:00
debug.cpp Kernel: Fix OOB read in sys$dbgputstr(..) during fuzzing 2021-08-13 11:08:11 +02:00
disown.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
dup2.cpp Kernel: Track allocated FileDescriptionAndFlag elements in each Process 2021-07-28 19:07:00 +02:00
emuctl.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
execve.cpp Kernel: Convert random bytes interface to use AK::Bytes 2021-09-01 18:06:14 +02:00
exit.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
fcntl.cpp Kernel: Make Process::current() return a Process& instead of Process* 2021-08-19 23:49:53 +02:00
fork.cpp Kernel: Always observe the return value of Region::map and remap 2021-08-25 00:18:42 +02:00
ftruncate.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
futex.cpp Kernel: Remove unnecessary FutexQueue::did_remove() 2021-08-23 00:02:09 +02:00
get_dir_entries.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
get_stack_bounds.cpp Kernel: Disable big process lock for sys$get_stack_bounds 2021-08-06 23:36:12 +02:00
getrandom.cpp Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +02:00
getuid.cpp Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
hostname.cpp Kernel: Convert remaining users of copy_string_from_user() 2021-08-15 12:44:35 +02:00
inode_watcher.cpp Kernel: Rename FileDescription::create() => try_create() 2021-08-29 01:09:19 +02:00
ioctl.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
keymap.cpp Kernel: Disable big process lock for sys$getkeymap 2021-08-06 23:36:12 +02:00
kill.cpp Kernel: Guard the all processes list with a Spinlock rather than a Mutex 2021-08-28 20:53:38 +02:00
link.cpp Kernel: Use try_copy_kstring_from_user() in sys$link() 2021-08-06 00:37:47 +02:00
lseek.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
mkdir.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
mknod.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
mmap.cpp Kernel: Don't disable interrupts in validate_inode_mmap_prot 2021-08-28 20:53:38 +02:00
module.cpp Kernel: Convert remaining users of copy_string_from_user() 2021-08-15 12:44:35 +02:00
mount.cpp Kernel: Handle allocation failure in ProcFS and friends 2021-08-15 02:27:13 +02:00
open.cpp Kernel: Stop allowing implicit conversion from KResult to int 2021-08-14 15:19:00 +02:00
perf_event.cpp Kernel: Don't record sys$perf_event() if profiling is not enabled 2021-08-12 00:03:40 +02:00
pipe.cpp Kernel: Handle OOM from DoubleBuffer creation in FIFO creation 2021-08-03 18:54:23 +02:00
pledge.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
prctl.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
process.cpp Kernel: Convert remaining users of copy_string_from_user() 2021-08-15 12:44:35 +02:00
profiling.cpp Everywhere: Core dump => Coredump 2021-08-23 00:02:09 +02:00
ptrace.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
purge.cpp Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr 2021-09-03 23:20:23 +02:00
read.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
readlink.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
realpath.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
rename.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
rmdir.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
sched.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
select.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
sendfd.cpp Kernel: Track allocated FileDescriptionAndFlag elements in each Process 2021-07-28 19:07:00 +02:00
setpgid.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
setuid.cpp Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
shutdown.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
sigaction.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
socket.cpp Kernel: Rename LocalSocket::create_connected_pair() => try_*() 2021-08-29 01:33:15 +02:00
stat.cpp Kernel: Stop allowing implicit conversion from KResult to int 2021-08-14 15:19:00 +02:00
statvfs.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
sync.cpp Kernel: Disable big process lock for sys$sync 2021-08-07 15:30:26 +02:00
sysconf.cpp Kernel: Disable big process lock for sys$sysconf 2021-08-06 23:36:12 +02:00
thread.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
times.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
ttyname.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
umask.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
uname.cpp Kernel: Migrate hostname locking to ProtectedValue 2021-08-07 11:48:00 +02:00
unlink.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
unveil.cpp Kernel+Userland: Remove chroot functionality 2021-08-15 12:44:35 +02:00
utime.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
waitid.cpp Kernel: Acquire reference to waitee before trying to block in sys$waitid 2021-08-28 20:53:38 +02:00
write.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00