From 575b78d9e3b9c701edb5087aa1c5f9c4031d3548 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Thu, 18 Jun 2020 15:12:03 +0800 Subject: [PATCH] [cff] Fix memory leak (#58610). * src/cff/cffobjs.c (cff_size_init): When the call to `funcs->create' fails, make sure to free `internal'. --- ChangeLog | 7 +++++++ src/cff/cffobjs.c | 12 ++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b80f16b5d..326dfce0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2020-06-19 Sebastian Rasmussen + + [cff] Fix memory leak (#58610). + + * src/cff/cffobjs.c (cff_size_init): When the call to + `funcs->create' fails, make sure to free `internal'. + 2020-06-19 Werner Lemberg * src/cff/cffload.c (cff_index_get_pointers): Rename `t' to `tbl'. diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index 981bc7009..252f58a5b 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -166,15 +166,16 @@ FT_Error error = FT_Err_Ok; PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size ); + FT_Memory memory = cffsize->face->memory; + CFF_Internal internal = NULL; + if ( funcs ) { - CFF_Face face = (CFF_Face)cffsize->face; - CFF_Font font = (CFF_Font)face->extra.data; - CFF_Internal internal = NULL; + CFF_Face face = (CFF_Face)cffsize->face; + CFF_Font font = (CFF_Font)face->extra.data; PS_PrivateRec priv; - FT_Memory memory = cffsize->face->memory; FT_UInt i; @@ -206,6 +207,9 @@ size->strike_index = 0xFFFFFFFFUL; Exit: + if ( error ) + FT_FREE( internal ); + return error; }