mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:37:35 +00:00
Kernel: Fix possible buffer overrun when scanning a MappedROM
If the length of the prefix was less than the chunk_size argument we were potentionally reading past the mapped memory region.
This commit is contained in:
parent
e70aa690d2
commit
190572b714
1 changed files with 4 additions and 1 deletions
|
@ -23,7 +23,10 @@ public:
|
||||||
|
|
||||||
Optional<PhysicalAddress> find_chunk_starting_with(StringView prefix, size_t chunk_size) const
|
Optional<PhysicalAddress> find_chunk_starting_with(StringView prefix, size_t chunk_size) const
|
||||||
{
|
{
|
||||||
for (auto* candidate = base(); candidate < end(); candidate += chunk_size) {
|
auto prefix_length = prefix.length();
|
||||||
|
if (size < prefix_length)
|
||||||
|
return {};
|
||||||
|
for (auto* candidate = base(); candidate <= end() - prefix_length; candidate += chunk_size) {
|
||||||
if (!__builtin_memcmp(prefix.characters_without_null_termination(), candidate, prefix.length()))
|
if (!__builtin_memcmp(prefix.characters_without_null_termination(), candidate, prefix.length()))
|
||||||
return paddr_of(candidate);
|
return paddr_of(candidate);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue