]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Fix resource leak
authorWang King <king.wang@huawei.com>
Wed, 12 Apr 2017 08:44:04 +0000 (16:44 +0800)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 13 Apr 2017 12:14:54 +0000 (08:14 -0400)
The virRotatingFileWriterAppend method leaks the file->entry
on the virRotatingFileWriterEntryNew failing path.

src/util/virrotatingfile.c

index 914472970b5ec01ec6edca17a2d1bc398a4dbca9..83a695f6fb5c67daf0d06c49fcb76061df625210 100644 (file)
@@ -483,18 +483,19 @@ virRotatingFileWriterAppend(virRotatingFileWriterPtr file,
 
         if ((file->entry->pos == file->maxlen && len) ||
             forceRollover) {
-            virRotatingFileWriterEntryPtr tmp = file->entry;
+            virRotatingFileWriterEntryPtr tmp;
             VIR_DEBUG("Hit max size %zu on %s (force=%d)\n",
                       file->maxlen, file->basepath, forceRollover);
 
             if (virRotatingFileWriterRollover(file) < 0)
                 return -1;
 
-            if (!(file->entry = virRotatingFileWriterEntryNew(file->basepath,
-                                                              file->mode)))
+            if (!(tmp = virRotatingFileWriterEntryNew(file->basepath,
+                                                      file->mode)))
                 return -1;
 
-            virRotatingFileWriterEntryFree(tmp);
+            virRotatingFileWriterEntryFree(file->entry);
+            file->entry = tmp;
         }
     }