mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-09 04:15:52 +00:00
libc_integration: fix out-of-bound access
which leads to sporadic pagefaults/segmentation faults. Fixes #3967
This commit is contained in:
parent
139a2cfae9
commit
f8d0552d52
@ -30,7 +30,7 @@ if { [get_cmd_switch --autopilot] } {
|
||||
set run [expr [have_spec nova] || [have_spec hw]]
|
||||
}
|
||||
if {[have_board imx8q_evk]} {
|
||||
set config_wo 10000
|
||||
set config_wo 9000
|
||||
set run 1
|
||||
}
|
||||
if {[have_board linux]} {
|
||||
|
@ -66,8 +66,14 @@ void *worker_func(void *ptr)
|
||||
data_out.push_back(buf[random()%r_res]);
|
||||
}
|
||||
|
||||
if (data_out.size() < bytes_written) {
|
||||
error("error: worker ", work_info.worker_no, " unexpected state");
|
||||
exit(-8);
|
||||
}
|
||||
|
||||
/* write part of response */
|
||||
size_t cnt { min(static_cast<size_t>(work_info.buffer_size), work_info.num_bytes-bytes_written) };
|
||||
size_t cnt { min(static_cast<size_t>(work_info.buffer_size),
|
||||
data_out.size() - bytes_written) };
|
||||
ssize_t w_res { write(work_info.pipe_out_fd,
|
||||
data_out.data()+bytes_written,
|
||||
cnt) };
|
||||
@ -103,7 +109,9 @@ void *worker_func(void *ptr)
|
||||
/* write remaining output bytes */
|
||||
while (bytes_written < data_out.size()) {
|
||||
|
||||
size_t cnt { min(static_cast<size_t>(work_info.buffer_size), work_info.num_bytes-bytes_written) };
|
||||
size_t cnt { min(static_cast<size_t>(work_info.buffer_size),
|
||||
data_out.size() - bytes_written) };
|
||||
|
||||
ssize_t w_res { write(work_info.pipe_out_fd,
|
||||
data_out.data()+bytes_written, cnt) };
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user