[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 2ab77c7: * src/ftcommon.c (FTDemo_Install_Font)
From: |
Werner LEMBERG |
Subject: |
[freetype2-demos] master 2ab77c7: * src/ftcommon.c (FTDemo_Install_Font): Handle alloc/file errors. |
Date: |
Thu, 10 Dec 2015 06:30:29 +0000 |
branch: master
commit 2ab77c726fbca88f47f1ec22e564c2f9571d5aaa
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>
* src/ftcommon.c (FTDemo_Install_Font): Handle alloc/file errors.
Problem reported by Alexei.
---
ChangeLog | 6 ++++++
src/ftcommon.c | 29 +++++++++++++++++++++++------
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 75a1350..f7d8780 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-10 Werner Lemberg <address@hidden>
+
+ * src/ftcommon.c (FTDemo_Install_Font): Handle alloc/file errors.
+
+ Problem reported by Alexei.
+
2015-12-09 Alexei Podtelezhnikov <address@hidden>
* src/ftstring.c (event_angle_change): Wrap angle differently.
diff --git a/src/ftcommon.c b/src/ftcommon.c
index 11f71c5..bdf0d1f 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -433,8 +433,8 @@
if ( handle->preload )
{
- FILE* file = fopen( filename, "rb" );
- int file_size;
+ FILE* file = fopen( filename, "rb" );
+ size_t file_size;
if ( file == NULL ) /* shouldn't happen */
@@ -444,16 +444,33 @@
}
fseek( file, 0, SEEK_END );
- file_size = ftell( file );
+ file_size = (size_t)ftell( file );
fseek( file, 0, SEEK_SET );
if ( file_size <= 0 )
+ {
+ free( font );
+ fclose( file );
return FT_Err_Invalid_Stream_Operation;
+ }
+
+ font->file_address = malloc( file_size );
+ if ( !font->file_address )
+ {
+ free( font );
+ fclose( file );
+ return FT_Err_Out_Of_Memory;
+ }
- font->file_address = malloc( (size_t)file_size );
- fread( font->file_address, 1, (size_t)file_size, file );
+ if ( fread( font->file_address, 1, file_size, file ) != file_size )
+ {
+ free( font->file_address );
+ free( font );
+ fclose( file );
+ return FT_Err_Invalid_Stream_Read;
+ }
- font->file_size = (size_t)file_size;
+ font->file_size = file_size;
fclose( file );
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 2ab77c7: * src/ftcommon.c (FTDemo_Install_Font): Handle alloc/file errors.,
Werner LEMBERG <=