aboutsummaryrefslogtreecommitdiff
path: root/src/sd-daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sd-daemon.c')
-rw-r--r--src/sd-daemon.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/sd-daemon.c b/src/sd-daemon.c
index 84761025..9d698e5f 100644
--- a/src/sd-daemon.c
+++ b/src/sd-daemon.c
@@ -340,6 +340,11 @@ int sd_notify(int unset_environment, const char *state) {
goto finish;
}
+ if (strlen(e) > sizeof(sockaddr.un.sun_path)) {
+ r = -EINVAL;
+ goto finish;
+ }
+
if ((fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0)) < 0) {
r = -errno;
goto finish;
@@ -347,7 +352,7 @@ int sd_notify(int unset_environment, const char *state) {
memset(&sockaddr, 0, sizeof(sockaddr));
sockaddr.sa.sa_family = AF_UNIX;
- strncpy(sockaddr.un.sun_path, e, sizeof(sockaddr.un.sun_path));
+ strncpy(sockaddr.un.sun_path, e, sizeof(sockaddr.un.sun_path) - 1);
if (sockaddr.un.sun_path[0] == '@')
sockaddr.un.sun_path[0] = 0;