diff --git a/src/util.c b/src/util.c index 0fc370a..512808b 100644 --- a/src/util.c +++ b/src/util.c @@ -2400,6 +2400,12 @@ MOBI_RET mobi_decode_font_resource(unsigned char **decoded_font, size_t *decoded return MOBI_DATA_CORRUPT; } } else { + if (*decoded_size < encoded_size) { + buffer_free(buf); + free(*decoded_font); + debug_print("Font size in record (%zu) larger then declared (%zu)\n", encoded_size, *decoded_size); + return MOBI_DATA_CORRUPT; + } memcpy(*decoded_font, encoded_font, encoded_size); }