summaryrefslogtreecommitdiffstats
path: root/sys/syscall_vtt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/syscall_vtt.c')
-rw-r--r--sys/syscall_vtt.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/sys/syscall_vtt.c b/sys/syscall_vtt.c
index 4b58b2c..4dadd6c 100644
--- a/sys/syscall_vtt.c
+++ b/sys/syscall_vtt.c
@@ -9,16 +9,13 @@ s_syscall_vtt_write(
size_t payload_bytes,
void *payload_data)
{
- if(payload_bytes < sizeof(struct syscall_vtt_write)) {
- kprintf("syscall_vtt_write: message is too small for this syscall!\n");
- return EOOB;
- }
- struct syscall_vtt_write *payload = payload_data;
- if(payload_bytes < sizeof(struct syscall_vtt_write) + payload->len) {
- kprintf("syscall_vtt_write: message is to small for payload! (%i vs %i)\n",
- payload->len, payload_bytes);
- return EOOB;
- }
+ size_t bytes_needed = sizeof(struct syscall_generic_write);
+ CHECK_TOOSMALL(bytes_needed, payload_bytes, "Message is too small for this syscall!");
+
+ struct syscall_generic_write *payload = payload_data;
+ bytes_needed += payload->len * 2;
+ CHECK_TOOSMALL(bytes_needed, payload_bytes, "Message is too small for write buffer!");
+
return vt_write(vtt, payload->data, payload->len);
}