91ac31e7df
Resolves: #2079262
47 lines
1.2 KiB
Diff
47 lines
1.2 KiB
Diff
From 22a0cccb4d9d002f33c1ba7a4b36812c7d4f46b5 Mon Sep 17 00:00:00 2001
|
|
From: Werner Lemberg <wl@gnu.org>
|
|
Date: Sat, 19 Mar 2022 06:40:17 +0100
|
|
Subject: [PATCH] * src/base/ftobjs.c (ft_open_face_internal): Properly guard
|
|
`face_index`.
|
|
|
|
We must ensure that the cast to `FT_Int` doesn't change the sign.
|
|
|
|
Fixes #1139.
|
|
---
|
|
src/base/ftobjs.c | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
From d014387ad4a5dd04d8e7f99587c7dacb70261924 Mon Sep 17 00:00:00 2001
|
|
From: Werner Lemberg <wl@gnu.org>
|
|
Date: Sat, 19 Mar 2022 09:30:45 +0100
|
|
Subject: [PATCH 2/2] * src/base/ftobjs.c (ft_open_face_internal): Thinko.
|
|
|
|
---
|
|
src/base/ftobjs.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
|
|
index 2c0f0e6c9..10952a6c6 100644
|
|
--- a/src/base/ftobjs.c
|
|
+++ b/src/base/ftobjs.c
|
|
@@ -2527,6 +2527,16 @@
|
|
#endif
|
|
|
|
|
|
+ /* only use lower 31 bits together with sign bit */
|
|
+ if ( face_index > 0 )
|
|
+ face_index &= 0x7FFFFFFFL;
|
|
+ else
|
|
+ {
|
|
+ face_index = -face_index;
|
|
+ face_index &= 0x7FFFFFFFL;
|
|
+ face_index = -face_index;
|
|
+ }
|
|
+
|
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
|
FT_TRACE3(( "FT_Open_Face: " ));
|
|
if ( face_index < 0 )
|
|
--
|
|
2.35.1
|
|
|