fix possible leak.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 21 Nov 2010 05:18:19 +0000 (05:18 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 21 Nov 2010 05:18:19 +0000 (05:18 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eet@54755 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eet_lib.c

index 758757a..7fc6d1b 100644 (file)
@@ -1833,7 +1833,7 @@ eet_read_cipher(Eet_File   *ef,
    /* compressed data */
    else
      {
-        void *tmp_data;
+        void *tmp_data = NULL;
         void *data_deciphered = NULL;
         unsigned int data_deciphered_sz = 0;
         int free_tmp = 0;
@@ -1873,7 +1873,9 @@ eet_read_cipher(Eet_File   *ef,
                   goto on_error;
                }
 
-             free(tmp_data);
+             if (free_tmp)
+                free(tmp_data);
+             free_tmp = 1;
              tmp_data = data_deciphered;
              compr_size = data_deciphered_sz;
           }
@@ -1882,7 +1884,11 @@ eet_read_cipher(Eet_File   *ef,
         dlen = size;
         if (uncompress((Bytef *)data, &dlen,
                        tmp_data, (uLongf)compr_size))
-           goto on_error;
+          {
+             if (free_tmp)
+                free(tmp_data);
+             goto on_error;
+          }
 
         if (free_tmp)
            free(tmp_data);