summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2021-06-17 15:45:57 +0300
committerOleg Oshmyan <chortos@inbox.lv>2021-07-10 02:36:31 +0300
commit677e8e3ca75e25163bfd5c217d9d4c1de09bd242 (patch)
treed740cb813f735390ebb93b70c25a13ef911cb6d3
parent2a2d718e0fd6d47072566e519744634d93621353 (diff)
downloadlibass-677e8e3ca75e25163bfd5c217d9d4c1de09bd242.tar.bz2
libass-677e8e3ca75e25163bfd5c217d9d4c1de09bd242.tar.xz
fontconfig: fix misplaced overflow check
This allowed writes to one past the end of `families` and `fullnames`.
-rw-r--r--libass/ass_fontconfig.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c
index e5065b5..fd6ea33 100644
--- a/libass/ass_fontconfig.c
+++ b/libass/ass_fontconfig.c
@@ -166,17 +166,17 @@ static void scan_fonts(FcConfig *config, ASS_FontProvider *provider)
// read family names
meta.n_family = 0;
- while (FcPatternGetString(pat, FC_FAMILY, meta.n_family,
- (FcChar8 **)&families[meta.n_family]) == FcResultMatch
- && meta.n_family < MAX_NAME)
+ while (meta.n_family < MAX_NAME &&
+ FcPatternGetString(pat, FC_FAMILY, meta.n_family,
+ (FcChar8 **)&families[meta.n_family]) == FcResultMatch)
meta.n_family++;
meta.families = families;
// read fullnames
meta.n_fullname = 0;
- while (FcPatternGetString(pat, FC_FULLNAME, meta.n_fullname,
- (FcChar8 **)&fullnames[meta.n_fullname]) == FcResultMatch
- && meta.n_fullname < MAX_NAME)
+ while (meta.n_fullname < MAX_NAME &&
+ FcPatternGetString(pat, FC_FULLNAME, meta.n_fullname,
+ (FcChar8 **)&fullnames[meta.n_fullname]) == FcResultMatch)
meta.n_fullname++;
meta.fullnames = fullnames;