]> granicus.if.org Git - taglib/commitdiff
Fix memory leaks in the FLAC parsing code
authorLukáš Lalinský <lalinsky@gmail.com>
Fri, 11 Mar 2011 09:29:27 +0000 (10:29 +0100)
committerLukáš Lalinský <lalinsky@gmail.com>
Fri, 11 Mar 2011 09:29:27 +0000 (10:29 +0100)
Thanks to Daniel Schaack for reporting these.

taglib/flac/flacfile.cpp

index 6a57f863d5e0d8dd93a61f9329db9384defb95e1..c8cc1fb85710d398dce82bf9e233e16c530758b7 100644 (file)
@@ -65,13 +65,13 @@ public:
     hasID3v2(false),
     hasID3v1(false)
   {
-    for(uint i = 0; i < blocks.size(); i++) {
-      delete blocks[i];
-    }
   }
 
   ~FilePrivate()
   {
+    for(uint i = 0; i < blocks.size(); i++) {
+      delete blocks[i];
+    }
     delete properties;
   }
 
@@ -403,6 +403,7 @@ void FLAC::File::scan()
       }
       else {
         debug("FLAC::File::scan() -- invalid picture found, discarting");
+        delete picture;
       }
     }
 
@@ -412,6 +413,9 @@ void FLAC::File::scan()
     if(block->code() != MetadataBlock::Padding) {
       d->blocks.append(block);
     }
+    else {
+      delete block;
+    }
 
     nextBlockOffset += length + 4;