diff --git a/src/kernel/syscalls/endpoint.cpp b/src/kernel/syscalls/endpoint.cpp index 1821829..0dd0787 100644 --- a/src/kernel/syscalls/endpoint.cpp +++ b/src/kernel/syscalls/endpoint.cpp @@ -29,7 +29,7 @@ endpoint_send(j6_handle_t handle, uint64_t tag, const void * data, size_t data_l j6_status_t endpoint_receive(j6_handle_t handle, uint64_t * tag, void * data, size_t * data_len) { - if (!tag || !data_len || !data) + if (!tag || !data_len || (*data_len && !data)) return j6_err_invalid_arg; endpoint *e = get_handle(handle); diff --git a/src/user/testapp/main.cpp b/src/user/testapp/main.cpp index 4aa523f..4cfd24b 100644 --- a/src/user/testapp/main.cpp +++ b/src/user/testapp/main.cpp @@ -134,7 +134,7 @@ main(int argc, const char **argv) size_t len = 0; while (true) { - result = j6_endpoint_receive(endp, &tag, &len, nullptr); + result = j6_endpoint_receive(endp, &tag, nullptr, &len); if (result != j6_status_ok) return result;