summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-12-27Kernel: Tag more methods and types as [[nodiscard]]Brian Gianforcaro
Tag methods at where not obvserving the return value is an obvious error with [[nodiscard]] to catch potential future bugs.
2020-12-27AK: Add NO_DISCARD macro to allow clang-format friendly class annotationsBrian Gianforcaro
clang-format seems to barf on these attributes, to make it easier to use these attributes and have clang-format not mangle the following code we can hide them behind a macro so clang-format doesn't have to handle it.
2020-12-27Documentation: Update macOS build instructions cask invocation (#4561)Nathan Lanza
brew deprecated `brew cask` and requires `brew install --cask` instead
2020-12-27Kernel: Take into account the time keeper's frequency (if no HPET)Tom
The PIT is now also running at a rate of ~250 ticks/second, so rather than assuming there are 1000 ticks/second we need to query the timer being used for the actual frequency. Fixes #4508
2020-12-27Kernel: Remove the per-process icon_id and sys$set_process_icon()Andreas Kling
This was a goofy kernel API where you could assign an icon_id (int) to a process which referred to a global shbuf with a 16x16 icon bitmap inside it. Instead of this, programs that want to display a process icon now retrieve it from the process executable instead.
2020-12-27LibGUI: Use FileIconProvider in RunningProcessesModelAndreas Kling
This was the last remaining client of the per-process icon_id.
2020-12-27SystemMonitor: Fetch process icons from their executableAndreas Kling
Instead of using the extremely hackish icon_id field in /proc/all, we now retrieve process icons from their executable by using GUI::FileIconProvider.
2020-12-27Kernel: Expose process executable paths in /proc/allAndreas Kling
2020-12-27Kernel: Lock target process when generating core dumpAndreas Kling
Dumping core can happen at the end of a profiling run, and in that case we have to protect the target process and take the lock while iterating over its region map. Fixes #4509.
2020-12-27paste: Don't read past clipboard data buffer sizeLinus Groh
ByteBuffer is not null-terminated (anymore), this is another one of those bugs. Also use the new format functions while we're here. Fixes #4558.
2020-12-26Kernel: Remove subheap from list before removing memoryTom
When the ExpandableHeap calls the remove_memory function, the subheap is assumed to be removed and freed entirely. remove_memory may drop the underlying memory at any time, but it also may cause further allocation requests. Not removing it from the list before calling remove_memory could cause a memory allocation in that subheap while remove_memory is executing. which then causes issues once the underlying memory is actually freed.
2020-12-26DevTools: Add a simple GML Playground application :^)Andreas Kling
This app allows you to edit GML and see the results live. Pretty cool!
2020-12-26CMake: Generate SONAME attribute for shared objectsItamar
Previosuly, generation of the SONAME attribute was disabled. This caused libraries to have relative paths in DT_NEEDED attributes (e.g "Libraries/libcore.so" instead of just "libcore.so"), which caused build errors when the working directory during build was not $SERENITY_ROOT/Build. This caused the build of ports that use libraries other than libc.so to fail (e.g the nesalizer port). Closes #4457
2020-12-26Kernel: Allow 'elevating' unveil permissions if implicitly inherited from '/'AnotherTest
This can happen when an unveil follows another with a path that is a sub-path of the other one: ```c++ unveil("/home/anon/.config/whoa.ini", "rw"); unveil("/home/anon", "r"); // this would fail, as "/home/anon" inherits // the permissions of "/", which is None. ```
2020-12-26LibTLS: Fix TLS breakage after ByteBuffer => Span conversionAndreas Kling
Oops, I accidentally shadowed the outer scope's "decrypted" ByteBuffer which caused us to throw away the buffer too early. Fixes #4533.
2020-12-26LibGUI: Make the LinkLabel widget keyboard-friendlyAndreas Kling
Make it tab-focusable and activate it with the return key. :^)
2020-12-26MenuApplets: Username: init app early, pledge early, do not unveil /tmpBrendan Coles
2020-12-26SystemServer: Set HOME for servicesSergey Bugaev
Fixes https://github.com/SerenityOS/serenity/issues/4484
2020-12-26SystemServer: Port to Core::AccountSergey Bugaev
We now have a handy Core::Account class that we can use instead of iterating over the passwd database ourselves.
2020-12-26LibGUI: Set LinkLabel tooltip if text can't fit the widgetAndreas Kling
We were setting a tooltip when the text overflowed the *window* width, make this more general by basing it on the *widget* width.
2020-12-26LibGUI: Tweak GUI::Label API a bit and add did_change_text() virtualAndreas Kling
2020-12-26LibGUI: Minor tweaks to the GUI::LinkLabelAndreas Kling
Remove some unnecessary includes and make the constructor private.
2020-12-26LibGUI: Rename Link => LinkLabelAndreas Kling
2020-12-26Profiler: Show the name & PID of process being profiledAndreas Kling
Also tweak the GUI a little bit to look nicer.
2020-12-26AK: Fix busted Trie testAnotherTest
This wasn't testing anything ^^'
2020-12-26AK: Make AK::IsSame<T, U>::value a constexpr boolAnotherTest
It being an enum value was preventing it from being used without `!!` in requires clauses (bool also makes more sense anyway).
2020-12-26Kernel: Implement unveil() as a prefix-treeAnotherTest
Fixes #4530.
2020-12-26AK: Add a prefix tree implementationAnotherTest
`AK::Trie` can be keyed by any given hashable type, and can store any metadata (including nothing at all). Also adds a test.
2020-12-26Meta: Make lint-shell-scripts.sh happyAnotherTest
`${FAILURES}` -> `"${FAILURES}"`
2020-12-26Profiler: Show a GUI message box with the error when profiling failsAndreas Kling
This came up in @jonathandturner's video walking through the system and playing with things: https://www.youtube.com/watch?v=TtV86uL5oD4 At one point, he tried profiling his Terminal app, and since the Terminal was completely idle while profiling, no samples were captured and there was no profile to show. Make sure we propagate any error when loading the profile, and show it in a GUI message box instead of stderr. :^)
2020-12-26Everywhere: void arguments to C functionsLenny Maiorani
Problem: - C functions with no arguments require a single `void` in the argument list. Solution: - Put the `void` in the argument list of functions in C header files.
2020-12-26LibC: Enable compiler warnings for scanf and strftime format stringsSahan Fernando
2020-12-26Everywhere: Add -Wformat=2 to buildSahan Fernando
2020-12-26LibC: Fix some incorrect printf usagesSahan Fernando
2020-12-26LibC: Enable compiler warnings for printf format stringsSahan Fernando
2020-12-26Kernel: Reset the process dumpable flag on successful non-setid execAndreas Kling
Once we've committed to a new memory layout and non-setid credentials, we can reset the dumpable flag.
2020-12-26TextEditor+HexEditor: Tweak dirty document warning messagesAndreas Kling
2020-12-26LaunchServer: Remove icons from LaunchServer::HandlerLinus Groh
2020-12-26LibDesktop: Remove icons from Desktop::Launcher::DetailsLinus Groh
2020-12-26FileManager: Fix missing launch action iconsLinus Groh
I missed this when updating everything to use GUI::FileIconProvider rather than loading icons from .af files, it broke as a result as none of them have icon info anymore. :^)
2020-12-26LibJS: Implement String.prototype.endsWith()Xavier Cooney
2020-12-26LibJS: Implement IsRegExp abstract operationXavier Cooney
This is needed by various String.prototype operations, as well as the RegExp constructor.
2020-12-25WindowServer: Validate cursor type in SetWindowCursor message handlerLinus Groh
Fixes #4536.
2020-12-25Kernel+LibC: Introduce a "dumpable" flag for processesAndreas Kling
This new flag controls two things: - Whether the kernel will generate core dumps for the process - Whether the EUID:EGID should own the process's files in /proc Processes are automatically made non-dumpable when their EUID or EGID is changed, either via syscalls that specifically modify those ID's, or via sys$execve(), when a set-uid or set-gid program is executed. A process can change its own dumpable flag at any time by calling the new sys$prctl(PR_SET_DUMPABLE) syscall. Fixes #4504.
2020-12-25Kernel: Make /proc/PID directories owned by the EUID:EGIDAndreas Kling
This is instead of the UID:GID, since that was allowing some very bad information leaks like spawning "su" as an unprivileged user and having full /proc access to it. Work towards #4504.
2020-12-25Kernel: Fix build with E1000_DEBUGAndreas Kling
2020-12-25AK: Remove custom %w format string specifierAndreas Kling
This was a non-standard specifier alias for %04x. This patch replaces all uses of it with new-style formatting functions instead.
2020-12-25AK: Remove custom %b format string specifierAndreas Kling
This was a non-standard specifier alias for %02x. This patch replaces all uses of it with new-style formatting functions instead.
2020-12-25Kernel: Allocate new main thread stack before committing to execAndreas Kling
If the allocation fails (e.g ENOMEM) we want to simply return an error from sys$execve() and continue executing the current executable. This patch also moves make_userspace_stack_for_main_thread() out of the Thread class since it had nothing in particular to do with Thread.
2020-12-25UserspaceEmulator: Use ring 3 segment selectorsAndreas Kling
We were using ring 0 selectors everywhere (the bottom 3 bits of a selector determines the ring.) This doesn't really make any practical difference since UE doesn't run code in other rings anyway, but let's have correct-looking segment selectors. :^)