diff options
Diffstat (limited to 'libs/fontconfig/null-pointer-dereference-when-computing-a-patt.patch')
| -rw-r--r-- | libs/fontconfig/null-pointer-dereference-when-computing-a-patt.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libs/fontconfig/null-pointer-dereference-when-computing-a-patt.patch b/libs/fontconfig/null-pointer-dereference-when-computing-a-patt.patch new file mode 100644 index 0000000..572582c --- /dev/null +++ b/libs/fontconfig/null-pointer-dereference-when-computing-a-patt.patch @@ -0,0 +1,65 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Marcus Spencer <marcus@marcusspencer.us> +Date: Fri, 22 May 2026 01:28:46 -0500 +Subject: [PATCH] Fix a null pointer dereference when computing a pattern from + a FreeType face that has no family name + +Changelog: fixed +--- + src/fcfreetype.c | 39 +++++++++++++++++++++------------------ + 1 file changed, 21 insertions(+), 18 deletions(-) + +diff --git a/src/fcfreetype.c b/src/fcfreetype.c +index c57f9b33acac..05c2e8a00471 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); + } + |
