forked from KolibriOS/kolibrios
SysFn 18.13 security fix: now apps cannot destroy kernel memory via passing illegal address in ecx
Update docs on SysFn 18.13 git-svn-id: svn://kolibrios.org@8247 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5d4528238c
commit
4e919c4eb5
@ -956,6 +956,14 @@ picture rb Xsize*Ysize*4 ; 32 бита
|
|||||||
информация
|
информация
|
||||||
Возвращаемое значение:
|
Возвращаемое значение:
|
||||||
* функция не возвращает значения
|
* функция не возвращает значения
|
||||||
|
но, если указатель в ecx недопустимый, например,
|
||||||
|
регион [ecx, ecx + 9) пересекается с памятью ядра,
|
||||||
|
то тогда функция возвращает -1
|
||||||
|
Замечания:
|
||||||
|
* В данный момент используется только часть буфера размером
|
||||||
|
9 байт. Тем не менее рекомендуется использовать буфер
|
||||||
|
размером 16 байт для будущей совместимости, в будущем могут быть
|
||||||
|
добавлены некоторые поля.
|
||||||
Структура буфера:
|
Структура буфера:
|
||||||
db a,b,c,d для версии a.b.c.d
|
db a,b,c,d для версии a.b.c.d
|
||||||
db 0: зарезервировано
|
db 0: зарезервировано
|
||||||
|
@ -949,6 +949,14 @@ Parameters:
|
|||||||
the information will be placed
|
the information will be placed
|
||||||
Returned value:
|
Returned value:
|
||||||
* function does not return value
|
* function does not return value
|
||||||
|
but if pointer in ecx is illegal, for example,
|
||||||
|
[ecx, ecx + 9) region intersects with kernel memory,
|
||||||
|
then function returns -1
|
||||||
|
Remarks:
|
||||||
|
* At the moment only the part of the buffer by a size
|
||||||
|
9 bytes is used. Nevertheless it is recommended to use
|
||||||
|
16 byte buffer for the future compatibility, in the future
|
||||||
|
some fields can be added.
|
||||||
Structure of the buffer:
|
Structure of the buffer:
|
||||||
db a,b,c,d for version a.b.c.d
|
db a,b,c,d for version a.b.c.d
|
||||||
db 0: reserved
|
db 0: reserved
|
||||||
|
@ -2455,11 +2455,21 @@ sysfn_lastkey: ; 18.12 = return 0 (backward compatibility)
|
|||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
sysfn_getversion: ; 18.13 = get kernel ID and version
|
sysfn_getversion: ; 18.13 = get kernel ID and version
|
||||||
|
; if given memory address belongs to kernel then error
|
||||||
|
mov eax, ecx
|
||||||
|
mov ebx, version_end-version_inf
|
||||||
|
call is_region_userspace
|
||||||
|
test eax, eax
|
||||||
|
jz .addr_error
|
||||||
|
|
||||||
mov edi, ecx
|
mov edi, ecx
|
||||||
mov esi, version_inf
|
mov esi, version_inf
|
||||||
mov ecx, version_end-version_inf
|
mov ecx, version_end-version_inf
|
||||||
rep movsb
|
rep movsb
|
||||||
ret
|
ret
|
||||||
|
.addr_error: ; if given memory address is illegal
|
||||||
|
mov eax, -1
|
||||||
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
sysfn_waitretrace: ; 18.14 = sys wait retrace
|
sysfn_waitretrace: ; 18.14 = sys wait retrace
|
||||||
;wait retrace functions
|
;wait retrace functions
|
||||||
|
Loading…
Reference in New Issue
Block a user