Age | Commit message (Collapse) | Author |
|
|
|
|
|
DevicesModel wants to match devices supported by the kernel to device nodes
in /dev.
|
|
This will make it much easier to see why a process wants to open the file.
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
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
|
|
|
|
This means we can deselect other items immediately when performing a mouse-down
on an unselected item.
|
|
We will now consider a file to be an executable if any of the executable
permission bits are set.
|
|
While at it, also add some niceties and fix some things.
|
|
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).
|
|
|
|
Regions *do* zero-fill on demand now. :^)
|
|
We can't go higher than line 0. Can't rely on max() here since line
numbers are unsigned.
Fixes #1145.
|
|
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.
|
|
Also make sure to hide this column by default where we don't expect
to see it.
|
|
This makes it possible to open symlinks to directories by activating
them (via double click, for example.) :^)
Fixes #21.
|
|
This allows you to set the GFileSystemModel root to a symlink to a
directory and it nicely opens that directory like you would expect.
|
|
|
|
|
|
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
We had two identical code paths doing this for some reason.
|
|
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.
|
|
Let's not have that 2038 problem people are talking about. :^)
|
|
What was previously the "Int" type is now "Int32" and "Int64".
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|