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

[libvirt] [PATCH] util: fix releasing pidfile in cleanup



Coverity found out the very obvious problem in the code.  That is that
virPidFileReleasePath() was called only if
virPidFileAcquirePath() returned 0.  But virPidFileAcquirePath() doesn't
return only 0 on success, but the FD that needs to be closed.

Signed-off-by: Martin Kletzander <mkletzan redhat com>
---
 src/util/virpidfile.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c
index 098458f..a77a326 100644
--- a/src/util/virpidfile.c
+++ b/src/util/virpidfile.c
@@ -592,9 +592,8 @@ virPidFileForceCleanupPath(const char *path)
     if (virPidFileReadPath(path, &pid) < 0)
         return -1;

-    if (virPidFileAcquirePath(path, false, 0) == 0) {
-        virPidFileReleasePath(path, fd);
-    } else {
+    fd = virPidFileAcquirePath(path, false, 0);
+    if (fd < 0) {
         virResetLastError();

         /* Only kill the process if the pid is valid one.  0 means
@@ -607,5 +606,8 @@ virPidFileForceCleanupPath(const char *path)
             return -1;
     }

+    if (fd)
+        virPidFileReleasePath(path, fd);
+
     return 0;
 }
-- 
2.1.3


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