From 80191ec6a13e1d2172ee9e70e2d50d1e04b6fb0e Mon Sep 17 00:00:00 2001 From: Marcus Spencer Date: Fri, 22 May 2026 13:56:36 -0500 Subject: [PATCH] Fix a null pointer dereference when computing a pattern from an FT_Face that has no family Closes #521 See --- src/fcfreetype.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/fcfreetype.c b/src/fcfreetype.c index c57f9b33..05c2e8a0 100644 --- a/src/fcfreetype.c +++ b/src/fcfreetype.c @@ -2080,28 +2080,31 @@ FcFreeTypeQueryFaceInternal (const FT_Face face, int generic_family = FC_FAMILY_UNKNOWN; elt = FcPatternObjectFindElt (pat, FC_FAMILY_OBJECT); - for (l = FcPatternEltValues (elt); l; l = FcValueListNext (l)) { - FcValue v = FcValueCanonicalize (&l->value); + if (elt) { + for (l = FcPatternEltValues (elt); l; l = FcValueListNext (l)) { + FcValue v = FcValueCanonicalize (&l->value); - if (v.type == FcTypeString) { - if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"mono")) { - generic_family = FC_FAMILY_MONO; - break; - } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"sans")) { - generic_family = FC_FAMILY_SANS; - break; - } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"serif")) { - generic_family = FC_FAMILY_SERIF; - break; - } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"emoji")) { - generic_family = FC_FAMILY_EMOJI; - break; - } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"math")) { - generic_family = FC_FAMILY_MATH; - break; + if (v.type == FcTypeString) { + if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"mono")) { + generic_family = FC_FAMILY_MONO; + break; + } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"sans")) { + generic_family = FC_FAMILY_SANS; + break; + } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"serif")) { + generic_family = FC_FAMILY_SERIF; + break; + } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"emoji")) { + generic_family = FC_FAMILY_EMOJI; + break; + } else if (FcStrStrIgnoreCase (v.u.s, (FcChar8 *)"math")) { + generic_family = FC_FAMILY_MATH; + break; + } } } } + FcPatternObjectAddInteger(pat, FC_GENERIC_FAMILY_OBJECT, generic_family); } -- GitLab