[GSUB] Protect against mismatching Extension subtable types
This commit is contained in:
parent
969afd706e
commit
8533bb985e
|
@ -679,10 +679,13 @@ struct SubstLookup : Lookup {
|
||||||
unsigned int type = get_type ();
|
unsigned int type = get_type ();
|
||||||
|
|
||||||
if (HB_UNLIKELY (type == GSUB_Extension)) {
|
if (HB_UNLIKELY (type == GSUB_Extension)) {
|
||||||
/* Return lookup type of first extension subtable.
|
unsigned int count = get_subtable_count ();
|
||||||
* The spec says all of them should have the same type.
|
|
||||||
* XXX check for that in sanitize() */
|
|
||||||
type = get_subtable(0).u.extension->get_type ();
|
type = get_subtable(0).u.extension->get_type ();
|
||||||
|
/* The spec says all subtables should have the same type.
|
||||||
|
* This is specially important if one has a reverse type! */
|
||||||
|
for (unsigned int i = 1; i < count; i++)
|
||||||
|
if (get_subtable(i).u.extension->get_type () != type)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
|
|
Loading…
Reference in New Issue