freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master e40e8b3: [gzip] Fix access of small compressed files


From: Werner LEMBERG
Subject: [freetype2] master e40e8b3: [gzip] Fix access of small compressed files (#45937).
Date: Sun, 13 Sep 2015 06:06:12 +0000

branch: master
commit e40e8b33a1e925c7f9db57bedac4014f57481232
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [gzip] Fix access of small compressed files (#45937).
    
    * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
    
    (ft_gzip_get_uncompressed_file): Correct byte order while reading
    unsigned long value.  Without this change, the whole optimization of
    accessing small files in `FT_Stream_OpenGzip' is never executed!  As
    a consequence, access to PCF files in general (which are normally
    small files) should be much improved now as originally intended.
---
 ChangeLog         |   12 ++++++++++++
 src/gzip/ftgzip.c |    7 +++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c185380..3618f24 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2015-09-13  Werner Lemberg  <address@hidden>
+
+       [gzip] Fix access of small compressed files (#45937).
+
+       * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
+
+       (ft_gzip_get_uncompressed_file): Correct byte order while reading
+       unsigned long value.  Without this change, the whole optimization of
+       accessing small files in `FT_Stream_OpenGzip' is never executed!  As
+       a consequence, access to PCF files in general (which are normally
+       small files) should be much improved now as originally intended.
+
 2015-09-11  Werner Lemberg  <address@hidden>
 
        [psaux] Fix potential buffer overflow (#45922).
diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c
index 879eb88..be9c122 100644
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -557,6 +557,9 @@
 
       stream->descriptor.pointer = NULL;
     }
+
+    if ( !stream->read )
+      FT_FREE( stream->base );
   }
 
 
@@ -584,7 +587,7 @@
     old_pos = stream->pos;
     if ( !FT_Stream_Seek( stream, stream->size - 4 ) )
     {
-      result = FT_Stream_ReadULong( stream, &error );
+      result = FT_Stream_ReadULongLE( stream, &error );
       if ( error )
         result = 0;
 
@@ -685,7 +688,7 @@
 
     stream->size  = 0x7FFFFFFFL;  /* don't know the real size! */
     stream->pos   = 0;
-    stream->base  = 0;
+    stream->base  = NULL;
     stream->read  = ft_gzip_stream_io;
     stream->close = ft_gzip_stream_close;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]