1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:38:11 +00:00

Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t.

Dealing with the unsigned overflow propagation here just seems unreasonably
error prone. Let's limit ourselves to 2GB buffer sizes instead.
This commit is contained in:
Andreas Kling 2019-02-25 21:19:57 +01:00
parent 5af4e622b9
commit beda478821
40 changed files with 144 additions and 136 deletions

View file

@ -177,14 +177,14 @@ bool KeyboardDevice::can_read(Process&) const
return !m_queue.is_empty();
}
ssize_t KeyboardDevice::read(Process&, byte* buffer, size_t size)
ssize_t KeyboardDevice::read(Process&, byte* buffer, ssize_t size)
{
ssize_t nread = 0;
while ((size_t)nread < size) {
while (nread < size) {
if (m_queue.is_empty())
break;
// Don't return partial data frames.
if ((size - nread) < sizeof(Event))
if ((size - nread) < (ssize_t)sizeof(Event))
break;
auto event = m_queue.dequeue();
memcpy(buffer, &event, sizeof(Event));
@ -193,7 +193,7 @@ ssize_t KeyboardDevice::read(Process&, byte* buffer, size_t size)
return nread;
}
ssize_t KeyboardDevice::write(Process&, const byte*, size_t)
ssize_t KeyboardDevice::write(Process&, const byte*, ssize_t)
{
return 0;
}