diff --git a/src/utf8_fgetch.c b/src/utf8_fgetch.c index 8fafa55..d00a792 100644 --- a/src/utf8_fgetch.c +++ b/src/utf8_fgetch.c @@ -10,6 +10,12 @@ uint32_t utf8_fgetch(FILE *f) { } buffer[0] = (char)c; int size = utf8_size(buffer); + + if (size > UTF8_MAX_SIZE) { + fseek(f, size - 1, SEEK_CUR); + return UTF8_INVALID; + } + if (size > 1) { int amt = fread(&buffer[1], 1, size - 1, f); if (amt != size - 1) {