[lvm-devel] master - libdaemon: Fix socket reuse error paths.
Alasdair Kergon
agk at fedoraproject.org
Wed May 13 12:45:56 UTC 2015
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=02e10f4ccd60f66a00d5406452459317baba7c62
Commit: 02e10f4ccd60f66a00d5406452459317baba7c62
Parent: cc560b75aa5144ce6859e6d0ecc4cb918af7f4d8
Author: Alasdair G Kergon <agk at redhat.com>
AuthorDate: Wed May 13 13:42:09 2015 +0100
Committer: Alasdair G Kergon <agk at redhat.com>
CommitterDate: Wed May 13 13:42:09 2015 +0100
libdaemon: Fix socket reuse error paths.
Invert S_ISSOCK validation.
Fail instead of replacing a symlink with a new socket.
After failure, skip calling fcntl with invalid socket_fd.
---
WHATS_NEW | 1 +
libdaemon/server/daemon-server.c | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index e1674e2..e92c01a 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.120 -
===============================
+ Fix some libdaemon socket creation and reuse error paths.
Daemons (libdaemon) support exit on idle also in non-systemd environment.
Provide make dist and make rpm targets
Configure lvm.conf for use_lvmetad and use_lvmpolld.
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 5b1aff1..e1a9da9 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -261,12 +261,12 @@ static int _open_socket(daemon_state s)
}
/* Socket already exists. If it's stale, remove it. */
- if (stat(sockaddr.sun_path, &buf)) {
+ if (lstat(sockaddr.sun_path, &buf)) {
perror("stat failed");
goto error;
}
- if (S_ISSOCK(buf.st_mode)) {
+ if (!S_ISSOCK(buf.st_mode)) {
fprintf(stderr, "%s: not a socket\n", sockaddr.sun_path);
goto error;
}
@@ -595,7 +595,7 @@ void daemon_start(daemon_state s)
}
/* Set Close-on-exec */
- if (fcntl(s.socket_fd, F_SETFD, 1))
+ if (!failed && fcntl(s.socket_fd, F_SETFD, 1))
fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", s.socket_fd, strerror(errno));
/* Signal parent, letting them know we are ready to go. */
More information about the lvm-devel
mailing list