From 87bd510f8b8acff7096159423f87251d82288700 Mon Sep 17 00:00:00 2001 From: liaoyonglin Date: Tue, 16 Jan 2024 11:18:29 +0800 Subject: [PATCH] add a conditional statement to avoid fread size too big to coredump Signed-off-by: attackoncs <2710651793@qq.com> --- texk/ttfdump/libttf/hdmx.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/texk/ttfdump/libttf/hdmx.c b/texk/ttfdump/libttf/hdmx.c index d91b98eb1b..a0ee60ca59 100644 --- a/texk/ttfdump/libttf/hdmx.c +++ b/texk/ttfdump/libttf/hdmx.c @@ -44,7 +44,11 @@ static void ttfLoadHDMX (FILE *fp,HDMXPtr hdmx,ULONG offset) hdmx->Records[i].PixelSize = ttfGetBYTE(fp); hdmx->Records[i].MaxWidth = ttfGetBYTE(fp); hdmx->Records[i].Width = XCALLOC (hdmx->size, BYTE); - fread ((hdmx->Records+i)->Width, sizeof(BYTE), hdmx->numGlyphs+1,fp); + //if hdmx->numGlyphs+1 > hdmx->size,it will coredump,so we read min(hdmx->numGlyphs+1,hdmx->size) and truncate the remainder. + if (hdmx->numGlyphs+1 <= hdmx->size) + fread ((hdmx->Records+i)->Width, sizeof(BYTE), hdmx->numGlyphs+1,fp); + else + fread ((hdmx->Records+i)->Width, sizeof(BYTE), hdmx->size,fp); } }