chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-bus: Fix a read after free error in bus-match. (#3624) (#3625)
[elogind.git]
/
src
/
libelogind
/
sd-daemon
/
sd-daemon.c
diff --git
a/src/libelogind/sd-daemon/sd-daemon.c
b/src/libelogind/sd-daemon/sd-daemon.c
index a25353bb51adc1c87f678abc6bc3728809d08ed4..766d9ef6ed1b0d944d10b67467a2035f5831b9b1 100644
(file)
--- a/
src/libelogind/sd-daemon/sd-daemon.c
+++ b/
src/libelogind/sd-daemon/sd-daemon.c
@@
-1,5
+1,3
@@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
/***
This file is part of systemd.
/***
This file is part of systemd.
@@
-105,7
+103,7
@@
_public_ int sd_listen_fds(int unset_environment) {
finish:
unsetenv_all(unset_environment);
return r;
finish:
unsetenv_all(unset_environment);
return r;
-
}
+}
_public_ int sd_listen_fds_with_names(int unset_environment, char ***names) {
_cleanup_strv_free_ char **l = NULL;
_public_ int sd_listen_fds_with_names(int unset_environment, char ***names) {
_cleanup_strv_free_ char **l = NULL;
@@
-139,8
+137,8
@@
_public_ int sd_listen_fds_with_names(int unset_environment, char ***names) {
} else {
r = strv_extend_n(&l, "unknown", n_fds);
if (r < 0)
} else {
r = strv_extend_n(&l, "unknown", n_fds);
if (r < 0)
- return r;
-}
+
return r;
+
}
*names = l;
l = NULL;
*names = l;
l = NULL;
@@
-315,12
+313,12
@@
_public_ int sd_is_socket_inet(int fd, int family, int type, int listening, uint
if (l < sizeof(struct sockaddr_in))
return -EINVAL;
if (l < sizeof(struct sockaddr_in))
return -EINVAL;
- return hto
ns
(port) == sockaddr.in.sin_port;
+ return hto
be16
(port) == sockaddr.in.sin_port;
} else {
if (l < sizeof(struct sockaddr_in6))
return -EINVAL;
} else {
if (l < sizeof(struct sockaddr_in6))
return -EINVAL;
- return hto
ns
(port) == sockaddr.in6.sin6_port;
+ return hto
be16
(port) == sockaddr.in6.sin6_port;
}
}
}
}
@@
-464,14
+462,12
@@
_public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
if (sockaddr.un.sun_path[0] == '@')
sockaddr.un.sun_path[0] = 0;
if (sockaddr.un.sun_path[0] == '@')
sockaddr.un.sun_path[0] = 0;
- msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + strlen(e);
- if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
- msghdr.msg_namelen = sizeof(struct sockaddr_un);
+ msghdr.msg_namelen = SOCKADDR_UN_LEN(sockaddr.un);
have_pid = pid != 0 && pid != getpid();
if (n_fds > 0 || have_pid) {
have_pid = pid != 0 && pid != getpid();
if (n_fds > 0 || have_pid) {
- /* CMSG_SPACE(0) may return value different th
e
n zero, which results in miscalculated controllen. */
+ /* CMSG_SPACE(0) may return value different th
a
n zero, which results in miscalculated controllen. */
msghdr.msg_controllen =
(n_fds > 0 ? CMSG_SPACE(sizeof(int) * n_fds) : 0) +
(have_pid ? CMSG_SPACE(sizeof(struct ucred)) : 0);
msghdr.msg_controllen =
(n_fds > 0 ? CMSG_SPACE(sizeof(int) * n_fds) : 0) +
(have_pid ? CMSG_SPACE(sizeof(struct ucred)) : 0);