proc: bugfix: array overrun from cgo in updateThreadList

This commit is contained in:
aarzilli
2016-01-08 09:43:37 +01:00
parent 4da4aea89c
commit 4266479531
3 changed files with 23 additions and 14 deletions

View File

@ -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]));