Assure fwrite() and fclose() only work if FD>=3, exit with -9 (EBADF) otherwise
This commit is contained in:
16
file.asm
16
file.asm
@ -86,9 +86,17 @@ fclose:
|
|||||||
push rbp
|
push rbp
|
||||||
mov rbp, rsp
|
mov rbp, rsp
|
||||||
|
|
||||||
|
cmp rdi, 3
|
||||||
|
jl .ebadf
|
||||||
|
|
||||||
mov rax, NR_close
|
mov rax, NR_close
|
||||||
syscall
|
syscall
|
||||||
|
jmp .quit
|
||||||
|
|
||||||
|
.ebadf:
|
||||||
|
mov rax, -9
|
||||||
|
|
||||||
|
.quit:
|
||||||
leave
|
leave
|
||||||
ret
|
ret
|
||||||
;----- fwrite(FILE* fp, char* str) -----;
|
;----- fwrite(FILE* fp, char* str) -----;
|
||||||
@ -98,6 +106,9 @@ fwrite:
|
|||||||
push rbp
|
push rbp
|
||||||
mov rbp, rsp
|
mov rbp, rsp
|
||||||
|
|
||||||
|
cmp rdi, 3
|
||||||
|
jl .ebadf
|
||||||
|
|
||||||
mov r9, rdi
|
mov r9, rdi
|
||||||
mov rdi, rsi
|
mov rdi, rsi
|
||||||
call strlen
|
call strlen
|
||||||
@ -105,6 +116,11 @@ fwrite:
|
|||||||
mov rax, NR_write
|
mov rax, NR_write
|
||||||
mov rdi, r9
|
mov rdi, r9
|
||||||
syscall
|
syscall
|
||||||
|
jmp .quit
|
||||||
|
|
||||||
|
.ebadf:
|
||||||
|
mov rax, -9
|
||||||
|
|
||||||
|
.quit:
|
||||||
leave
|
leave
|
||||||
ret
|
ret
|
||||||
|
Reference in New Issue
Block a user