summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-06-24LibJS: Add Number conversion in PrepareTemporalFieldsLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/687d06c
2022-06-24LibJS: Add Number conversion in ZonedDateTime.prototype.getISOFields()Linus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/bc59d8d
2022-06-24LibJS: Add Number conversion in AddDu/ToOrSubtractDu/FromPlainYearMonthLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/823300c
2022-06-24LibJS: Add conversion to mathematical number in ToTemporalTimeRecordLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/9f37d10
2022-06-24LibJS: Check for invalid epoch ns in DisambiguatePossibleInstantsLinus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/c12d20d
2022-06-24LibJS: Check for invalid epoch nanoseconds in NanosecondsToDaysLinus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/f1f016e
2022-06-24LibJS: Check for invalid epoch nanoseconds in InterpretISODateTimeOffsetLinus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/cdfe4a5
2022-06-24LibJS: Check for invalid epoch nanoseconds in getPossibleInstantsFor()Linus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/439e6af
2022-06-24LibJS: Remove duplicate steps for offset-only time zonesLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/7813599
2022-06-24LibJS: Remove check for Instant range before subtracting UTC offsetLinus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/5e2fecb
2022-06-24LibJS: Remove unnecessary modulo operation in GetISOPartsFromEpochLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/fc3f80d
2022-06-24LibJS: Use ToTemporalDuration in AddDu/ToOrSubtractDu/FromPlainYearMonthLinus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/a454134
2022-06-24Kernel: Enable -ftrivial-auto-var-init as a security mitigationBrian Gianforcaro
The flag will automatically initialize all variables to a pattern based on it's type. The goal being here is to eradicate an entire bug class of issues that can originate from uninitialized stack memory. Some examples include: - Kernel information disclosure, where uninitialized struct members or struct padding is copied back to usermode, leaking kernel information such as stack or heap addresses, or secret data like stack cookies. - Control flow based on uninitialized memory can cause a variety of issues at runtime, including stack corruptions like buffer overflows, heap corruptions due to deleting stray pointers. Even basic logic bugs can result from control flow operating on uninitialized data. As of GCC 12 this flag is now supported. https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a25e0b5e6ac8a77a71c229e0a7b744603365b0e9 Clang has already supported it for a few releases. https://reviews.llvm.org/D54604
2022-06-24Tests: Add test for dlsym(RTLD_DEFAULT) for symbols from dlopen'd libsAndrew Kaster
This broke with recent changes to library loading and mapping order.
2022-06-24LibELF: Warn on self-dlopening libraries while initializingTim Schumacher
2022-06-24LibELF: Check if initializers ran instead of trusting s_global_objectsTim Schumacher
The original heuristic of "a library being in `s_global_objects` means that it was fully initialized already" doesn't hold up anymore since we changed the loading order. This was causing us to skip parts of the initialization of dependency libraries when running dlopen (since it was the only user of that setting). Instead, set a flag after we run stage 4 (which is the "run the global initializers" stage) and check that flag when determining unfinished dependencies. This entirely replaces the `skip_global_objects` logic.
2022-06-23AudioServer: Reduce hardware audio buffer to 512 sampleskleines Filmröllchen
2022-06-23AudioServer: Make hardware write buffer size flexiblekleines Filmröllchen
This removes some old cruft to refactor the hardware buffer-related datastructures into depending on a single constant, which determines the number of samples per hardware buffer that the audio server mixes. This is set to 1024 as before, so there are no functional changes.
2022-06-23Kernel/Audio: Fix buffer size underflow for non-page-aligned sizeskleines Filmröllchen
When the size of the audio data was not a multiple of a page size, subtracting the page size from this unsigned variable would underflow it close to 2^32 and be clamped to the page size again. This would lead to writes into garbage addresses because of an incorrect write size, interestingly only causing the write() call to error out. Using saturating math neatly fixes this problem and allows buffer lengths that are not a multiple of a page size.
2022-06-23AK: Add saturating addition and subtraction to Checkedkleines Filmröllchen
2022-06-23AudioServer: Explicitly cast between numeric types in the mixerkleines Filmröllchen
2022-06-23LibAudio: Add spec comments to the FlacLoaderkleines Filmröllchen
This way the FlacLoader can be more easily understood by someone that doesn't already know the format inside out.
2022-06-23LibWeb: Fix unsafe capture of ref-to-local when setting up load timeoutAndreas Kling
We were capturing a reference to a stack local and then persisting the closure, causing it to dereference a long-gone object when invoked.
2022-06-23LibWeb/CSS: Check for NULL block statement when parsing font-face ruleCodeforEvolution
This prevents font-face rules without a block statement from crashing LibWeb during CSS parsing. The issue was discovered by Lubrsi during CSS parser fuzzing. :) Fixes #14141.
2022-06-23Base: Add box-shadow + border-radius HTML examplesMacDue
This now also shows the same box-shadows on the right on top of a background to test the clipping underneath the content.
2022-06-23LibGfx: Slap an -O3 optimization #pragma on FastBoxBlurFilterMacDue
This is done elsewhere in LibGfx, but adding it here is more of a prayer for speed.
2022-06-23LibGfx: Avoid AK::Function indirection in FastBoxBlurFilter + flatten itMacDue
This dropped a few percent when profiling Lubrsi's test.
2022-06-23LibGfx: Flatten AntiAliasingPainter::draw_ellipse_part()MacDue
This seemed to drop the time spent here a few percent in profiling.
2022-06-23LibWeb: Support using a border-radius with a box-shadowMacDue
This commit adds support for using all your favorite border radii with box-shadow, that is elliptical, circular, rounded rectangle etc. :^) There is some work needed to make this more performant. The larger your border radius is the larger the corner bitmap needs to be, which means more time spent in FastBoxBlurFilter. There are probably some tricks to bring this down. Fixes #14325
2022-06-23LibWeb: Add 'inside' clip mode to BorderRadiusCornerClipperMacDue
The default clip mode 'outside' clips everything outside the corner, 'inside' does the opposite :^)
2022-06-23LibWeb: Pass border radii data to shadow paintingMacDue
This is not used yet, but will be needed for painting shadows on elements that have a border-radius.
2022-06-23AK: Zero previous pointer *after* fixing the insertion list in HashTableHendiadyoin1
2022-06-23Tests: Add tests for `wcsftime`Tim Schumacher
2022-06-23LibC: Implement `wcsftime` using a makeshift solutionTim Schumacher
2022-06-23LibJS: Implement stage 3 proposal FinalizationRegistry changesIdan Horowitz
Specifically the 'Symbol as WeakMap Keys Proposal'.
2022-06-23LibJS: Implement WeakRef changes from 'Symbol as WeakMap Keys Proposal'Idan Horowitz
2022-06-23LibJS: Implement WeakSet changes from 'Symbol as WeakMap Keys Proposal'Idan Horowitz
2022-06-23LibJS: Implement WeakMap changes from 'Symbol as WeakMap Keys Proposal'Idan Horowitz
2022-06-23LibJS: Implement the CanBeHeldWeakly abstract operationIdan Horowitz
This AO is required for implementing the rest of the stage 3 'Symbol as WeakMap Keys Proposal'.
2022-06-22Base: Add a quote to the fortunes databaseAli Mohammad Pur
2022-06-22AK: Clear the previous and next pointers of deleted HashTable bucketsIdan Horowitz
Usually the values of the previous and next pointers of deleted buckets are never used, as they're not part of the main ordered bucket chain, but if an in-place rehashing is done, which results in the bucket being turned into a free bucket, the stale pointers will remain, at which point any item that is inserted into said free-bucket will have either a stale previous pointer if the HashTable was empty on insertion, or a stale next pointer, resulting in undefined behaviour. This commit also includes a new HashMap test that reproduces this issue
2022-06-22LibWeb: Implement "transferred size suggestion" for flex itemsAndreas Kling
2022-06-22LibLine: Use the real shown line count around in cleanup()Ali Mohammad Pur
Previously we would leave artifacts on screen if a change caused the buffer to span fewer lines than the current buffer. This commit records the shown line count and uses that instead of trying to guess the previous line count (and failing most of the time).
2022-06-22Base: Document /proc/{pid}/children in proc(7) manpageMacDue
2022-06-22Terminal+TerminalSettings: Add caret customizationMichał Lach
2022-06-22LibVT+Kernel: Separate the caret shapes and its steadinessMichał Lach
Currently CursorStyle enum handles both the styles and the steadiness or blinking of the terminal caret, which doubles the amount of its entries. This commit changes CursorStyle to CursorShape and moves the blinking option to a seperate boolean value.
2022-06-22Kernel: Eliminate possible KASLR leak by disabling CR4.FSGSBASEIdan Horowitz
The RDGSBASE userspace instruction allows programs to read the contents of the gs segment register which contains a kernel pointer to the base of the current Processor struct. Since we don't use this instruction in Serenity at the moment, we can simply disable it for now to ensure we don't break KASLR. Support can later be restored once proper swapping of the contents of gs is done on userspace/kernel boundaries.
2022-06-21Revert "Toolchain: Load x64 executables at a higher address"Tim Schumacher
Now that the lower pages can be unmapped and more of the virtual address range is available to us, we can actually use the default mapping address of x86_64 again. This reverts commit 292398b5857d0104f7c33fdb5d79f45fe8b395dd.
2022-06-21LibELF: Only collect region sizes before reserving memoryTim Schumacher
This keeps us from needlessly allocating storage via `malloc` as part of the `Vector`s that early, which we might conflict on while reserving memory for the main executable.
2022-06-21LibELF: Unmap the source file temporarily while reserving spaceTim Schumacher
This further reduces the chance that we will conflict with data that is already present at the target location.