[kern2] Fix sanitize issue on 32bit systems
Fixes https://github.com/harfbuzz/harfbuzz/issues/3483
This commit is contained in:
parent
32e542d6f0
commit
c69ec6f5bb
|
@ -681,6 +681,13 @@ struct ObsoleteTypes
|
||||||
const void *base,
|
const void *base,
|
||||||
const T *array)
|
const T *array)
|
||||||
{
|
{
|
||||||
|
/* https://github.com/harfbuzz/harfbuzz/issues/3483 */
|
||||||
|
/* If offset is less than base, return an offset that would
|
||||||
|
* result in an address half a 32bit address-space away,
|
||||||
|
* to make sure sanitize fails even on 32bit builds. */
|
||||||
|
if (offset < unsigned ((const char *) array - (const char *) base))
|
||||||
|
return INT_MAX / T::static_size;
|
||||||
|
|
||||||
/* https://github.com/harfbuzz/harfbuzz/issues/2816 */
|
/* https://github.com/harfbuzz/harfbuzz/issues/2816 */
|
||||||
return (offset - unsigned ((const char *) array - (const char *) base)) / T::static_size;
|
return (offset - unsigned ((const char *) array - (const char *) base)) / T::static_size;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue