Commit 432e00db2e99d4dbb6533df72855718797cd93b2

Werner Lemberg 2016-04-24T08:14:07

[truetype] Fix deallocation in case of error (#47726). * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in `outline' that are going to be deallocated in case of error.

diff --git a/ChangeLog b/ChangeLog
index 43ba8c6..2db583d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-04-24  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix deallocation in case of error (#47726).
+
+	* src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
+	`outline' that are going to be deallocated in case of error.
+
 2016-04-23  Werner Lemberg  <wl@gnu.org>
 
 	[autofit] Improve Georgian blue zone characters.
diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c
index fa2d2cf..fc28225 100644
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -42,7 +42,7 @@
 
 
   static
-  const FT_Outline  null_outline = { 0, 0, 0, 0, 0, 0 };
+  const FT_Outline  null_outline = { 0, 0, NULL, NULL, NULL, 0 };
 
 
   /* documentation is in ftoutln.h */
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index d1cb357..c4038ee 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1704,6 +1704,9 @@
         outline.n_points   = (short)( gloader->current.num_subglyphs + 4 );
         outline.n_contours = outline.n_points;
 
+        outline.tags     = NULL;
+        outline.contours = NULL;
+
         if ( FT_NEW_ARRAY( points, outline.n_points )   ||
              FT_NEW_ARRAY( tags, outline.n_points )     ||
              FT_NEW_ARRAY( contours, outline.n_points ) )