diff options
author | wm4 <wm4@nowhere> | 2014-03-03 15:52:54 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-03-03 16:37:02 +0100 |
commit | 04b51c2d70efda779adff96b4eea82c46682565b (patch) | |
tree | 6b577976e820cbe4ddbb65d040b2ed41a7919c95 /libass | |
parent | 14520fbc70eb63a3ce826c4e985f4233fb657196 (diff) | |
download | libass-04b51c2d70efda779adff96b4eea82c46682565b.tar.bz2 libass-04b51c2d70efda779adff96b4eea82c46682565b.tar.xz |
Don't crash on \fscx0
Freetype can return a bounding box with all fields set to INT_MIN if an
outline with all points set to 0 is used. This can happen e.g. with
\fscx0, but also in more complicated cases. (In the original crashing
sample, this was probably caused in combination with an embedded font.)
Such a bounding box causes libass to crash, because it will enlarge the
combined bitmap bounding box to a ridiculous size.
Just skip outlines that have en empty bounding box. This is probably
the correct thing to do, and won't pass INT_MAX down to other parts
of libass.
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_bitmap.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libass/ass_bitmap.c b/libass/ass_bitmap.c index 144c8c02..98c8d744 100644 --- a/libass/ass_bitmap.c +++ b/libass/ass_bitmap.c @@ -166,6 +166,9 @@ Bitmap *outline_to_bitmap(ASS_Library *library, FT_Library ftlib, FT_Bitmap bitmap; FT_Outline_Get_CBox(outline, &bbox); + if (bbox.xMin == bbox.xMax || bbox.yMin == bbox.yMax) + return NULL; + // move glyph to origin (0, 0) bbox.xMin &= ~63; bbox.yMin &= ~63; |