forked from KolibriOS/kolibrios
SysFn 9 security fix: now apps cannot destroy kernel memory via passing illegal address in ebx
Update docs on SysFn 9 git-svn-id: svn://kolibrios.org@8246 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a75d4696ea
commit
5d4528238c
@ -293,6 +293,9 @@ picture rb Xsize*Ysize*4 ; 32 бита
|
||||
ecx = -1 - получить информацию о текущем потоке
|
||||
Возвращаемое значение:
|
||||
* eax = максимальный номер слота потока
|
||||
но, если указатель в ebx недопустимый, например,
|
||||
регион [ebx, ebx + 0x4C) пересекается с памятью ядра,
|
||||
то тогда функция возвращает -1
|
||||
* буфер, на который указывает ebx, содержит следующую информацию:
|
||||
* +0: dword: использование процессора (сколько тактов в секунду
|
||||
уходит на исполнение именно этого потока)
|
||||
|
@ -283,6 +283,9 @@ Parameters:
|
||||
ecx = -1 - get information on the current thread
|
||||
Returned value:
|
||||
* eax = maximum number of the slot of a thread
|
||||
but if pointer in ebx is illegal, for example,
|
||||
[ebx, ebx + 0x4C) region intersects with kernel memory,
|
||||
then function returns -1
|
||||
* buffer pointed to by ebx contains the following information:
|
||||
* +0: dword: usage of the processor (how many time units
|
||||
per second leaves on execution of this thread)
|
||||
|
@ -3159,6 +3159,14 @@ sys_cpuusage:
|
||||
; +26 dword used mem
|
||||
; +30 dword PID , process idenfification number
|
||||
;
|
||||
; if given memory address belongs to kernel then error
|
||||
push ebx
|
||||
mov eax, ebx
|
||||
mov ebx, 0x4C
|
||||
call is_region_userspace
|
||||
pop ebx
|
||||
test eax, eax
|
||||
jz .addr_error
|
||||
|
||||
cmp ecx, -1 ; who am I ?
|
||||
jne .no_who_am_i
|
||||
@ -3249,6 +3257,10 @@ sys_cpuusage:
|
||||
mov [esp+32], eax
|
||||
ret
|
||||
|
||||
.addr_error: ; if given memory address is illegal
|
||||
mov eax, -1
|
||||
ret
|
||||
|
||||
align 4
|
||||
sys_clock:
|
||||
cli
|
||||
|
Loading…
Reference in New Issue
Block a user