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>
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
return -1;
}
+ if (fd)
+ virPidFileReleasePath(path, fd);
+
return 0;
}