summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2023-01-03 20:41:42 +0000
committerAlexei Podtelezhnikov <apodtele@gmail.com>2023-01-03 20:41:42 +0000
commite66480b56f9e09ded9a355dc1a9c109d8c6e3571 (patch)
tree6b62994b23b7c5a1d38650b65eb9b57a16d8f515
parent0bcb664de8ea44299f57c45d01433328596bc2a7 (diff)
downloadfreetype2-div-by-zero.tar.gz
* src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero. div-by-zero
The division-by-zero might happen in broken fonts (see #1194). Instead of returning a huge number from FT_DivFix until and failing to scale later, we now bail immediately.
-rw-r--r--src/base/ftobjs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 7f1f063cc..8b99a2088 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -3276,6 +3276,14 @@
if ( h < 0 )
h = -h;
+ if ( ( !w && req->width ) ||
+ ( !h && ( req->height || !req->width ) ) )
+ {
+ FT_ERROR(( "FT_Request_Metrics: Divide by zero\n" ));
+ error = FT_ERR( Divide_By_Zero );
+ goto Exit;
+ }
+
scaled_w = FT_REQUEST_WIDTH ( req );
scaled_h = FT_REQUEST_HEIGHT( req );