From c4ce3212e797cbe617aea30c057756916f4ae99b Mon Sep 17 00:00:00 2001 From: Kwarde Date: Wed, 25 Jun 2025 10:02:59 +0200 Subject: [PATCH] Assure fwrite() and fclose() only work if FD>=3, exit with -9 (EBADF) otherwise --- file.asm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/file.asm b/file.asm index db0a611..c2acbef 100644 --- a/file.asm +++ b/file.asm @@ -86,9 +86,17 @@ fclose: push rbp mov rbp, rsp + cmp rdi, 3 + jl .ebadf + mov rax, NR_close syscall + jmp .quit + .ebadf: + mov rax, -9 + + .quit: leave ret ;----- fwrite(FILE* fp, char* str) -----; @@ -98,6 +106,9 @@ fwrite: push rbp mov rbp, rsp + cmp rdi, 3 + jl .ebadf + mov r9, rdi mov rdi, rsi call strlen @@ -105,6 +116,11 @@ fwrite: mov rax, NR_write mov rdi, r9 syscall + jmp .quit + .ebadf: + mov rax, -9 + + .quit: leave ret