diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2021-06-17 15:45:57 +0300 |
---|---|---|
committer | Oleg Oshmyan <chortos@inbox.lv> | 2021-07-10 02:36:31 +0300 |
commit | 677e8e3ca75e25163bfd5c217d9d4c1de09bd242 (patch) | |
tree | d740cb813f735390ebb93b70c25a13ef911cb6d3 | |
parent | 2a2d718e0fd6d47072566e519744634d93621353 (diff) | |
download | libass-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.c | 12 |
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; |