From 9f342dff49ee0645fd409e08263a247624878020 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Mon, 18 Jan 2021 18:22:32 -0800 Subject: [PATCH] [kernel] fix err_insufficient bug in endpoint The endpoint syscalls endpoint_recv and endpoint_sendrecv gained new local stack variables for calling into possibly blocking endpoint functions, but the len variable was being initialized to 0 instead of the incoming buffer size. --- src/kernel/syscalls/endpoint.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kernel/syscalls/endpoint.cpp b/src/kernel/syscalls/endpoint.cpp index e4c9649..410563a 100644 --- a/src/kernel/syscalls/endpoint.cpp +++ b/src/kernel/syscalls/endpoint.cpp @@ -36,7 +36,7 @@ endpoint_receive(j6_handle_t handle, j6_tag_t *tag, size_t *len, void *data) if (!e) return j6_err_invalid_arg; j6_tag_t out_tag = j6_tag_invalid; - size_t out_len = 0; + size_t out_len = *len; j6_status_t s = e->receive(&out_tag, &out_len, data); *tag = out_tag; *len = out_len; @@ -57,7 +57,7 @@ endpoint_sendrecv(j6_handle_t handle, j6_tag_t *tag, size_t *len, void *data) return status; j6_tag_t out_tag = j6_tag_invalid; - size_t out_len = 0; + size_t out_len = *len; j6_status_t s = e->receive(&out_tag, &out_len, data); *tag = out_tag; *len = out_len;