refactor: sandbox stderr goes to host

master
Sean McBride 4 years ago
parent 4bc4358993
commit dd52cbd7e6

@ -131,12 +131,14 @@ err:
int32_t
wasm_write(int32_t fd, int32_t buf_offset, int32_t buf_size)
{
struct sandbox *s = current_sandbox_get();
struct sandbox *s = current_sandbox_get();
char * buffer = worker_thread_get_memory_ptr_void(buf_offset, buf_size);
if (fd == STDOUT_FILENO || fd == STDERR_FILENO) {
char *buffer = worker_thread_get_memory_ptr_void(buf_offset, buf_size);
int buffer_remaining = s->module->max_response_size - s->response.length;
int to_write = buffer_remaining > buf_size ? buf_size : buffer_remaining;
if (fd == STDERR_FILENO) { write(STDERR_FILENO, buffer, buf_size); }
if (fd == STDOUT_FILENO) {
int buffer_remaining = s->module->max_response_size - s->response.length;
int to_write = buffer_remaining > buf_size ? buf_size : buffer_remaining;
if (to_write == 0) return 0;
memcpy(&s->response.base[s->response.length], buffer, to_write);
@ -265,12 +267,7 @@ wasm_writev(int32_t fd, int32_t iov_offset, int32_t iovcnt)
int len = 0;
struct wasm_iovec *iov = worker_thread_get_memory_ptr_void(iov_offset,
iovcnt * sizeof(struct wasm_iovec));
for (int i = 0; i < iovcnt; i++) {
char *b = worker_thread_get_memory_ptr_void(iov[i].base_offset, iov[i].len);
memcpy(&s->response.base[s->response.length], b, iov[i].len);
s->response.length += iov[i].len;
len += iov[i].len;
}
for (int i = 0; i < iovcnt; i++) { len += wasm_write(fd, iov[i].base_offset, iov[i].len); }
return len;
}

Loading…
Cancel
Save