summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2017-08-22 08:41:03 +0200
committerWerner Lemberg <wl@gnu.org>2017-08-22 08:41:03 +0200
commitbd28952e23bcd268a623ea5202e1cde4a92defe4 (patch)
tree14e1834f06b2c1a4fef97039cb9e7674ae92bdb1
parent0aca17cf53f099f9ea34b3797949076073b60b5d (diff)
downloadfreetype2-bd28952e23bcd268a623ea5202e1cde4a92defe4.tar.gz
[base] Don't zero out allocated memory twice (#51816).
Patch applied from bug report. * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to avoid unnecessary overhead.
-rw-r--r--ChangeLog9
-rw-r--r--src/base/ftutil.c10
2 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 10319520e..c9bdca424 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2017-08-22 Werner Lemberg <wl@gnu.org>
+ [base] Don't zero out allocated memory twice (#51816).
+
+ Patch applied from bug report.
+
+ * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
+ avoid unnecessary overhead.
+
+2017-08-22 Werner Lemberg <wl@gnu.org>
+
[truetype] Integer overflow.
Changes triggered by
diff --git a/src/base/ftutil.c b/src/base/ftutil.c
index dccc209f4..7bd5bee87 100644
--- a/src/base/ftutil.c
+++ b/src/base/ftutil.c
@@ -135,7 +135,7 @@
ft_mem_free( memory, block );
block = NULL;
}
- else if ( new_count > FT_INT_MAX/item_size )
+ else if ( new_count > FT_INT_MAX / item_size )
{
error = FT_THROW( Array_Too_Large );
}
@@ -143,13 +143,15 @@
{
FT_ASSERT( !block );
- block = ft_mem_alloc( memory, new_count*item_size, &error );
+ block = memory->alloc( memory, new_count * item_size );
+ if ( block == NULL )
+ error = FT_THROW( Out_Of_Memory );
}
else
{
FT_Pointer block2;
- FT_Long cur_size = cur_count*item_size;
- FT_Long new_size = new_count*item_size;
+ FT_Long cur_size = cur_count * item_size;
+ FT_Long new_size = new_count * item_size;
block2 = memory->realloc( memory, cur_size, new_size, block );