From 6a2f041858656e0755f1758211e39ebeb2401f97 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 15 May 2026 14:28:54 +0300 Subject: [PATCH] LibC: Handle negative size in fgets --- userspace/libraries/LibC/stdio.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/userspace/libraries/LibC/stdio.cpp b/userspace/libraries/LibC/stdio.cpp index acd56e1a..c20eff4c 100644 --- a/userspace/libraries/LibC/stdio.cpp +++ b/userspace/libraries/LibC/stdio.cpp @@ -277,11 +277,11 @@ int fgetpos(FILE* file, fpos_t* pos) char* fgets(char* str, int size, FILE* file) { - if (size == 0) + if (size <= 0) return nullptr; ScopeLock _(file); int i = 0; - for (; i < size - 1; i++) + while (i < size - 1) { int c = getc_unlocked(file); if (c == EOF) @@ -290,12 +290,9 @@ char* fgets(char* str, int size, FILE* file) return nullptr; break; } - str[i] = c; + str[i++] = c; if (c == '\n') - { - i++; break; - } } str[i] = '\0'; return str;