[base] Fix memory leak.
Reported as https://bugs.chromium.org/p/chromium/issues/detail?id=738362 * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case of error.
This commit is contained in:
parent
134de096e0
commit
fe0a7d9df5
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2017-07-13 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[base] Fix memory leak.
|
||||
|
||||
Reported as
|
||||
|
||||
https://bugs.chromium.org/p/chromium/issues/detail?id=738362
|
||||
|
||||
* src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
|
||||
of error.
|
||||
|
||||
2017-07-12 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[base] Integer overflow.
|
||||
|
@ -412,13 +412,15 @@
|
||||
slot->advance.x <= -0x8000L * 64 )
|
||||
{
|
||||
FT_ERROR(( "FT_Get_Glyph: advance width too large\n" ));
|
||||
return FT_THROW( Invalid_Argument );
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit2;
|
||||
}
|
||||
if ( slot->advance.y >= 0x8000L * 64 ||
|
||||
slot->advance.y <= -0x8000L * 64 )
|
||||
{
|
||||
FT_ERROR(( "FT_Get_Glyph: advance height too large\n" ));
|
||||
return FT_THROW( Invalid_Argument );
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit2;
|
||||
}
|
||||
|
||||
glyph->advance.x = slot->advance.x * 1024;
|
||||
@ -427,6 +429,7 @@
|
||||
/* now import the image from the glyph slot */
|
||||
error = clazz->glyph_init( glyph, slot );
|
||||
|
||||
Exit2:
|
||||
/* if an error occurred, destroy the glyph */
|
||||
if ( error )
|
||||
FT_Done_Glyph( glyph );
|
||||
|
Loading…
Reference in New Issue
Block a user