summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-01-30Kernel: Address validation helpers should take size_t, not ssize_tAndreas Kling
2020-01-30Kernel: Some more int => size_t in NetworkAdapter and subclassesAndreas Kling
2020-01-30SystemMonitor: Unveil /devSergey Bugaev
DevicesModel wants to match devices supported by the kernel to device nodes in /dev.
2020-01-30Kernel: Dump backtrace when denying a path because of a veilSergey Bugaev
This will make it much easier to see why a process wants to open the file.
2020-01-29Kernel: Fail with EFAULT for any address+size that would wrap aroundAndreas Kling
Previously we were only checking that each of the virtual pages in the specified range were valid. This made it possible to pass in negative buffer sizes to some syscalls as long as (address) and (address+size) were on the same page.
2020-01-29Kernel: Make IPv4Socket::protocol_send() use a size_t for buffer sizeAndreas Kling
2020-01-29Base: Remove two unused iconsAndreas Kling
2020-01-29CPUGraph.MenuApplet: execute SystemMonitor on left mousebutton clickOliver Kraitschy
2020-01-28BXVGA: Disallow resolutions higher than 4096x2160Andreas Kling
There's no sense in allowing arbitrarily huge resolutions. Instead, we now cap the screen size at 4K DCI resolution and will reject attempts to go bigger with EINVAL.
2020-01-28Kernel: AnonymousVMObject::create_for_physical_range() should fail moreAndreas Kling
Previously it was not possible for this function to fail. You could exploit this by triggering the creation of a VMObject whose physical memory range would wrap around the 32-bit limit. It was quite easy to map kernel memory into userspace and read/write whatever you wanted in it. Test: Kernel/bxvga-mmap-kernel-into-userspace.cpp
2020-01-28Kernel: Tweak some include statementsAndreas Kling
2020-01-28LibGUI: Only consider starting a drag from an already selected itemSergey Bugaev
This means we can deselect other items immediately when performing a mouse-down on an unselected item.
2020-01-28LibGUI+FileManager: Try better to detect executablesSergey Bugaev
We will now consider a file to be an executable if any of the executable permission bits are set.
2020-01-28Userland+Terminal: Port to new CArgsParser APISergey Bugaev
While at it, also add some niceties and fix some things.
2020-01-28LibCore: Rewrite CArgsParserSergey Bugaev
This is a complete reimplementation of CArgsParser with a different API. Now, CArgsParser properly supports and distinguishes between: * Positional arguments (required or not) * Options Options can be short and/or long. The API allows you to add custom option and argument types. A few types are pre-implemented for convenience: * Boolean options (take no value) * String and integer options (take a required value) * String and integer arguments * Vector-of-string arguments This commit doesn't include changes for all the users of CArgsParser (see next commit for that).
2020-01-28GFileSystemModel: Don't copy the null-terminator after readlink()Andreas Kling
2020-01-28Kernel: Remove outdated comment in MemoryManagerAndreas Kling
Regions *do* zero-fill on demand now. :^)
2020-01-27LibGUI: Fix crash when trying to scroll above the head of the documentAndreas Kling
We can't go higher than line 0. Can't rely on max() here since line numbers are unsigned. Fixes #1145.
2020-01-27FileManager: Show symlink targets in status bar messageAndreas Kling
When a single item is selected and it happens to be a symlink pointing somewhere, we now show where it points to in the status bar. :^) There is a big ugly FIXME here about how DirectoryView has to work around the fact that there's a GSortingProxyModel attached to the table view widget.
2020-01-27LibGUI: Add symlink targets as a column in GFileSystemModelAndreas Kling
Also make sure to hide this column by default where we don't expect to see it.
2020-01-27FileManager: Use stat() when activating a file/directoryAndreas Kling
This makes it possible to open symlinks to directories by activating them (via double click, for example.) :^) Fixes #21.
2020-01-27LibGUI: Have GFileSystemModel use stat instead of lstat for the rootAndreas Kling
This allows you to set the GFileSystemModel root to a symlink to a directory and it nicely opens that directory like you would expect.
2020-01-27Kernel: sys$readlink() should return the number of bytes written outAndreas Kling
2020-01-27sleep: Use pledge()Andreas Kling
2020-01-27mknod: Use pledge()Andreas Kling
2020-01-27Kernel: sys$waitpid() only needs the waitee thread in the stopped caseAndreas Kling
If the waitee process is dead, we don't need to inspect the thread. This fixes an issue with sys$waitpid() failing before reap() since dead processes will have no remaining threads alive.
2020-01-27Kernel: Remove SmapDisablers in sys$getsockname() and sys$getpeername()Andreas Kling
Instead use the user/kernel copy helpers to only copy the minimum stuff needed from to/from userspace. Based on work started by Brian Gianforcaro.
2020-01-27Shell: If a command process is stopped, print the stop signal to stderrAndreas Kling
2020-01-27LibC: Add WSTOPSIG macroAndreas Kling
This macro can be used on the "status" output from sys$waitpid() to find out which signal caused the waitee process to stop. Fixes #794.
2020-01-27Kernel: Expose the signal that stopped a thread via sys$waitpid()Andreas Kling
2020-01-27Kernel: Disable interrupts while looking into the thread tableAndreas Kling
There was a race window in a bunch of syscalls between calling Thread::from_tid() and checking if the found thread was in the same process as the calling thread. If the found thread object was destroyed at that point, there was a use-after-free that could be exploited by filling the kernel heap with something that looked like a thread object.
2020-01-27Kernel: Remove ancient hack that put the current PID in TSS.SS2Andreas Kling
While I was bringing up multitasking, I put the current PID in the SS2 (ring 2 stack segment) slot of the TSS. This was so I could see which PID was currently running when just inspecting the CPU state.
2020-01-27Kernel: Simplify kernel thread stack allocationAndreas Kling
We had two identical code paths doing this for some reason.
2020-01-27Kernel: Never validate access to the kmalloc memory rangeAndreas Kling
Memory validation is used to verify that user syscalls are allowed to access a given memory range. Ring 0 threads never make syscalls, and so will never end up in validation anyway. The reason we were allowing kmalloc memory accesses is because kernel thread stacks used to be allocated in kmalloc memory. Since that's no longer the case, we can stop making exceptions for kmalloc in the validation code.
2020-01-27Kernel+LibC+Userland: Switch to 64-bit time_tAndreas Kling
Let's not have that 2038 problem people are talking about. :^)
2020-01-27LibGUI: Add 64-bit signed integer support to GVariantAndreas Kling
What was previously the "Int" type is now "Int32" and "Int64".
2020-01-26Kernel: read()/write() should respect timeouts when used on a socketsAndreas Kling
Move timeout management to the ReadBlocker and WriteBlocker classes. Also get rid of the specialized ReceiveBlocker since it no longer does anything that ReadBlocker can't do.
2020-01-26LookupServer: Don't cache already-expired DNS answersAndreas Kling
2020-01-26LibVT: Add parameter names in function signatures for clarityLinus Groh
2020-01-26LibVT: Rename escape$r to DECSTBM (Set Top and Bottom Margins)Linus Groh
2020-01-26LibVT: Remove empty lineLinus Groh
2020-01-26LibVT: Replace escape$h_l with SM (Set Mode) / RM (Reset Mode)Linus Groh
2020-01-26LibVT: Rename escape$f to HVP (Horizontal and Vertical Position)Linus Groh
2020-01-26LibVT: Rename escape$c to DA (Device Attributes)Linus Groh
2020-01-26LibVT: Rename escape$m to SGR (Select Graphic Rendition)Linus Groh
2020-01-26LibVT: Rename escape$H to CUP (Cursor Position)Linus Groh
2020-01-26LibVT: Rename escape$D to CUB (Cursor Backward)Linus Groh
2020-01-26LibVT: Rename escape$C to CUF (Cursor Forward)Linus Groh
2020-01-26LibVT: Rename escape$B to CUD (Cursor Down)Linus Groh
2020-01-26LibVT: Rename escape$A to CUU (Cursor Up)Linus Groh