memio: fgets() fills a string even if its size is not large enough

This commit is contained in:
Roman Fomin 2023-05-06 20:20:45 +07:00
parent 0fb24e322f
commit 03ac60dca7

View File

@ -165,7 +165,7 @@ char *mem_fgets(char *str, int count, MEMFILE *stream)
{ {
int i; int i;
if (str == NULL) if (str == NULL || count < 0)
return NULL; return NULL;
for (i = 0; i < count - 1; ++i) for (i = 0; i < count - 1; ++i)
@ -176,9 +176,7 @@ char *mem_fgets(char *str, int count, MEMFILE *stream)
{ {
if (mem_feof(stream)) if (mem_feof(stream))
return NULL; return NULL;
break;
str[i] = '\0';
return str;
} }
str[i] = ch; str[i] = ch;
@ -190,12 +188,13 @@ char *mem_fgets(char *str, int count, MEMFILE *stream)
if (ch == '\n') if (ch == '\n')
{ {
str[++i] = '\0'; ++i;
return str; break;
} }
} }
return NULL; str[i] = '\0';
return str;
} }
int mem_fgetc(MEMFILE *stream) int mem_fgetc(MEMFILE *stream)