Age | Commit message (Collapse) | Author |
|
This matches what happens when you double-click on a cell.
|
|
If the editing widget (as provided by the editing delegate) was focused
when editing stops, have the view take back focus.
|
|
Otherwise we may end up with a stale appearance until something else
causes it to repaint.
|
|
|
|
This API lets you specify whether to scroll horizontally, vertically,
or both.
|
|
|
|
|
|
To reproduce:
- make sure A0, A1, A2 do not exist (i.e. have not been selected or
written to)
- select A0
- type in =A1+A2
- see crash
|
|
|
|
|
|
Flatten the CPU features array instead of showing it as raw JSON data.
|
|
|
|
This fixes the misalignments when a header is not left-aligned.
|
|
|
|
|
|
...that can automatically generate documentation pages from the objects.
|
|
|
|
|
|
|
|
This patchset adds a few getters/setters to AbstractTableView to make
its looks more customisable:
- Header width & text alignment
- Default column width
- Ability to disable selected row highlighting
|
|
The tzset documentation says that TZ allows a per-second local timezone,
so don't be needlessly clever here.
No observable behavior difference at this point, but if we ever
implement tzset, this will have a small effect.
|
|
Milliseconds need extra handling, but everything else just works
now that mktime() handles this case.
|
|
Set member variables after calling mktime(), which canonicalizes
out-of-range values.
With this, DateTime::create(2020, 13, ...) will return a DateTime
on Jan 2021 (assuming the other parameters are in range).
|
|
DateTime::create() an just call DateTime::set_time().
No behavior change.
|
|
mktime() is supposed to fill in tm_wday and tm_yday, and it
it's supposed to canonicalize out-of-range values (that is,
"Jan 31" is turned into "Feb 1").
Instead of making the straightfoward tm_to_time() implementation
more complicated, just make it call time_to_tm() once the timestamp
is computed to break it back down ot (canonical) tm entries.
|
|
mktime()/timegm() handle month overflow
|
|
While this _does_ add a point of failure, it'll be a pretty bad day when
google goes down.
And this is unlikely to put a (positive) dent in their incoming
requests, so let's just roll with it until we have our own TLS server.
|
|
|
|
|
|
With two different sequence numbers to boot!
Fixes #3273
|
|
Because it looks nicer.
|
|
This is supposed to serve as a reminder if and when someone decides to make
the 'msg' field configurable.
|
|
A malicious caller of ifconfig could have caused the ifr_name field to
lack NUL-termination. I don't think this was an actual problem, though, as
the Kernel always forces NUL-termination by overwriting ifr_name's last byte
with NUL.
However, it feels better to do it properly.
|
|
A malicious caller of set_params could have caused the ifr_name field to
lack NUL-termination. I don't think this was an actual problem, though, as
the Kernel always forces NUL-termination by overwriting ifr_name's last byte
with NUL.
However, it feels better to do it properly.
No behaviour change (probably).
|
|
A malicious caller can create a SocketAddress for a local unix socket with an
over-long name that does not fit into struct sock_addr_un.
- Socket::connet: This caused the 'sun_path' field to
overflow, probably overwriting the return pointer of the call frame, and thus
crashing the process (in the best case).
- SocketAddress::to_sockaddr_un: This triggered a RELEASE_ASSERT, and thus
crashing the process.
Both have been fixed to return a nice error code instead of crashing.
|
|
All of these are cosmetic (I believe). Furthermore, they serve as
reminders to always check the length of the destination buffers.
|
|
An overlong group name in /etc/groups would have caused getgrent() to overflow
the global __grdb_entry. Curiously, overflow *within* __grdb_entry seems to have
no detrimental effects.
However, it was possible for a malicious sysadmin(?!) to craft an /etc/group
that overflows outside of the page allocated for __grdb_entry thus crash the
calling process. This affected at least SystemServer and su.
Now, the group name will be simply truncated. For display purposes, this is
fine. In case there is an exceptionally long group, it will not be properly
recognized. Also, a malicious /etc/groups might cause the caller of getgrent()
to become confused, but that is unavoidable.
|
|
Before, strftime unintentionally interpreted 0 as 'unlimited'. The specification
of strftime says no such thing.
Now, it properly returns 0 in that case (because the NUL byte doesn't fit).
|
|
|
|
|
|
These are not called in the kernel or by libstdc++ anyway.
Remove the tempting function, and prevent future overflows.
|
|
strdup: Because the length is already known at the time of copying, there is
no need to use strcpy (which has to check every single byte, and thus tends
to be slower than memcpy).
strndup: If 'str' is not NUL-terminated, strndup used to run off into the
adjacent memory region. This can be fixed by using the proper strlen variant:
strnlen.
|
|
|
|
|
|
It already includes AK/Memory.h, which includes Kernel/StdLib.h, which.
declares strstr().
|
|
|
|
Let's try this out and see how it feels! :^)
|
|
GUI::TabWidget has long has a TabPosition::Bottom option, but we still
rendered the tab buttons the same as TabPosition::Top.
This patch implements a custom look for bottom-side tabs. I've done my
best to match the look of the top-side ones, but there might be some
improvements we can make here. :^)
|
|
|
|
Test files created with:
$ for f in Libraries/LibJS/Tests/builtins/Date/Date.prototype.get*js; do
cp $f $(echo $f | sed -e 's/get/getUTC/') ;
done
$ rm Libraries/LibJS/Tests/builtins/Date/Date.prototype.getUTCTime.js
$ git add Libraries/LibJS/Tests/builtins/Date/Date.prototype.getUTC*.js
$ ls Libraries/LibJS/Tests/builtins/Date/Date.prototype.getUTC*.js | \
xargs sed -i -e 's/get/getUTC/g'
|