mirror of
https://github.com/go-delve/delve.git
synced 2025-11-02 12:59:01 +08:00
proc: bugfix: array overrun from cgo in updateThreadList
This commit is contained in:
@ -76,7 +76,7 @@ find_executable(int pid) {
|
||||
}
|
||||
|
||||
kern_return_t
|
||||
get_threads(task_t task, void *slice) {
|
||||
get_threads(task_t task, void *slice, int limit) {
|
||||
kern_return_t kret;
|
||||
thread_act_array_t list;
|
||||
mach_msg_type_number_t count;
|
||||
@ -86,6 +86,11 @@ get_threads(task_t task, void *slice) {
|
||||
return kret;
|
||||
}
|
||||
|
||||
if (count > limit) {
|
||||
vm_deallocate(mach_task_self(), (vm_address_t) list, count * sizeof(list[0]));
|
||||
return -2;
|
||||
}
|
||||
|
||||
memcpy(slice, (void*)list, count*sizeof(list[0]));
|
||||
|
||||
kret = vm_deallocate(mach_task_self(), (vm_address_t) list, count * sizeof(list[0]));
|
||||
|
||||
Reference in New Issue
Block a user