diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2023-01-03 20:41:42 +0000 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2023-01-03 20:41:42 +0000 |
commit | e66480b56f9e09ded9a355dc1a9c109d8c6e3571 (patch) | |
tree | 6b62994b23b7c5a1d38650b65eb9b57a16d8f515 /src/base/ftobjs.c | |
parent | 0bcb664de8ea44299f57c45d01433328596bc2a7 (diff) | |
download | freetype2-e66480b56f9e09ded9a355dc1a9c109d8c6e3571.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.
Diffstat (limited to 'src/base/ftobjs.c')
-rw-r--r-- | src/base/ftobjs.c | 8 |
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 ); |