Index: third_party/freetype/src/base/ftmac.c |
diff --git a/third_party/freetype/src/base/ftmac.c b/third_party/freetype/src/base/ftmac.c |
index 5301ab44fc03c5a75fbc94816242cf3bdf6649c6..114bbb63919c4217afd05c2b5e81c2827cfae3be 100644 |
--- a/third_party/freetype/src/base/ftmac.c |
+++ b/third_party/freetype/src/base/ftmac.c |
@@ -8,7 +8,7 @@ |
/* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */ |
/* classic platforms built by MPW. */ |
/* */ |
-/* Copyright 1996-2009, 2013, 2014 by */ |
+/* Copyright 1996-2015 by */ |
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -618,11 +618,11 @@ |
total_size += 6; /* code + 4 bytes chunk length */ |
} |
- total_size += GetHandleSize( post_data ) - 2; |
+ total_size += (FT_ULong)GetHandleSize( post_data ) - 2; |
last_code = code; |
- /* detect integer overflows */ |
- if ( total_size < old_total_size ) |
+ /* detect resource fork overflow */ |
+ if ( FT_MAC_RFORK_MAX_LEN < total_size ) |
{ |
error = FT_THROW( Array_Too_Large ); |
goto Error; |
@@ -747,6 +747,11 @@ |
return FT_THROW( Invalid_Handle ); |
sfnt_size = (FT_ULong)GetHandleSize( sfnt ); |
+ |
+ /* detect resource fork overflow */ |
+ if ( FT_MAC_RFORK_MAX_LEN < sfnt_size ) |
+ return FT_THROW( Array_Too_Large ); |
+ |
if ( FT_ALLOC( sfnt_data, (FT_Long)sfnt_size ) ) |
{ |
ReleaseResource( sfnt ); |