[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:
Werner Lemberg 2017-07-13 10:25:42 +02:00
parent 134de096e0
commit fe0a7d9df5
2 changed files with 16 additions and 2 deletions

View File

@ -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.

View File

@ -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 );