Fix:Core:Allocate large buffer on the heap instead of the stack
authortinloaf <tinloaf@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 6 Apr 2009 12:12:49 +0000 (12:12 +0000)
committertinloaf <tinloaf@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 6 Apr 2009 12:12:49 +0000 (12:12 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2187 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/file.c

index 3523554..890dcbf 100644 (file)
@@ -219,7 +219,7 @@ unsigned char *
 file_data_read_compressed(struct file *file, long long offset, int size, int size_uncomp)
 {
        void *ret;
-       char buffer[size];
+       char *buffer = 0;
        uLongf destLen=size_uncomp;
 
        if (file_cache) {
@@ -231,6 +231,8 @@ file_data_read_compressed(struct file *file, long long offset, int size, int siz
        } else 
                ret=g_malloc(size_uncomp);
        lseek(file->fd, offset, SEEK_SET);
+
+       buffer = (char *)g_malloc(size);
        if (read(file->fd, buffer, size) != size) {
                g_free(ret);
                ret=NULL;
@@ -241,6 +243,8 @@ file_data_read_compressed(struct file *file, long long offset, int size, int siz
                        ret=NULL;
                }
        }
+       g_free(buffer);
+
        return ret;
 }