chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
load-fragment: make parser more forgiving
[elogind.git]
/
src
/
sd-daemon.c
diff --git
a/src/sd-daemon.c
b/src/sd-daemon.c
index 5df70e38d524d2f5866c31f54eb84e854761d941..33970f6c41bb1bccc2b10b58d95db4966fbc7cda 100644
(file)
--- a/
src/sd-daemon.c
+++ b/
src/sd-daemon.c
@@
-1,4
+1,4
@@
-/*-*- Mode: C; c-basic-offset: 8 -*-*/
+/*-*- Mode: C; c-basic-offset: 8
; indent-tabs-mode: nil
-*-*/
/***
Copyright 2010 Lennart Poettering
/***
Copyright 2010 Lennart Poettering
@@
-325,7
+325,7
@@
int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t
}
int sd_notify(int unset_environment, const char *state) {
}
int sd_notify(int unset_environment, const char *state) {
-#if defined(DISABLE_SYSTEMD) || !defined(__linux__)
+#if defined(DISABLE_SYSTEMD) || !defined(__linux__)
|| !defined(SOCK_CLOEXEC)
return 0;
#else
int fd = -1, r;
return 0;
#else
int fd = -1, r;
@@
-381,7
+381,11
@@
int sd_notify(int unset_environment, const char *state) {
memset(&msghdr, 0, sizeof(msghdr));
msghdr.msg_name = &sockaddr;
memset(&msghdr, 0, sizeof(msghdr));
msghdr.msg_name = &sockaddr;
- msghdr.msg_namelen = sizeof(struct sockaddr_un);
+ msghdr.msg_namelen = sizeof(sa_family_t) + strlen(e);
+
+ if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
+ msghdr.msg_namelen = sizeof(struct sockaddr_un);
+
msghdr.msg_iov = &iovec;
msghdr.msg_iovlen = 1;
msghdr.msg_control = &control;
msghdr.msg_iov = &iovec;
msghdr.msg_iovlen = 1;
msghdr.msg_control = &control;