summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2022-08-29 16:25:07 +0100
committerChris Liddell <chris.liddell@artifex.com>2022-09-02 15:59:07 +0100
commitc8e196adf0cdc4fa2461fa1cdfde3dfed823d5d4 (patch)
tree088c619b10e763bc22963570e54e81c4a2867858
parent17dcfba9a0e2302d83ed8f92feaecee56b74df3c (diff)
downloadghostpdl-c8e196adf0cdc4fa2461fa1cdfde3dfed823d5d4.tar.gz
oss-fuzz 50720: CFF - validate fontname string length
-rw-r--r--pdf/pdf_font1C.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/pdf/pdf_font1C.c b/pdf/pdf_font1C.c
index 382a9dea3..c228b0996 100644
--- a/pdf/pdf_font1C.c
+++ b/pdf/pdf_font1C.c
@@ -952,9 +952,10 @@ pdfi_read_cff_dict(byte *p, byte *e, pdfi_gs_cff_font_priv *ptpriv, cff_font_off
code = pdfi_make_string_from_sid(font->ctx, (pdf_obj **) &fnamestr, font, offsets, args[0].ival);
if (code >= 0) {
- memcpy(ptpriv->font_name.chars, fnamestr->data, fnamestr->length);
- memcpy(ptpriv->key_name.chars, fnamestr->data, fnamestr->length);
- ptpriv->font_name.size = ptpriv->key_name.size = fnamestr->length;
+ int nlen = fnamestr->length > gs_font_name_max ? gs_font_name_max : fnamestr->length;
+ memcpy(ptpriv->font_name.chars, fnamestr->data, nlen);
+ memcpy(ptpriv->key_name.chars, fnamestr->data, nlen);
+ ptpriv->font_name.size = ptpriv->key_name.size = nlen;
pdfi_countdown(fnamestr);
}
break;