mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-17 21:13:48 -07:00
helpers: fix misuse of syscalls in sd namespace (#6379)
This commit is contained in:
@@ -21,8 +21,8 @@ namespace Systemd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int SdNotify(int unsetEnvironment, const char* state) {
|
int SdNotify(int unsetEnvironment, const char* state) {
|
||||||
int fd = socket(AF_UNIX, SOCK_DGRAM, 0);
|
int fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0);
|
||||||
if (fd == -1)
|
if (fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
constexpr char envVar[] = "NOTIFY_SOCKET";
|
constexpr char envVar[] = "NOTIFY_SOCKET";
|
||||||
@@ -47,12 +47,12 @@ namespace Systemd {
|
|||||||
if (unixAddr.sun_path[0] == '@')
|
if (unixAddr.sun_path[0] == '@')
|
||||||
unixAddr.sun_path[0] = '\0';
|
unixAddr.sun_path[0] = '\0';
|
||||||
|
|
||||||
if (!connect(fd, (const sockaddr*)&unixAddr, sizeof(struct sockaddr_un)))
|
if (connect(fd, (const sockaddr*)&unixAddr, sizeof(struct sockaddr_un)) < 0)
|
||||||
return 1;
|
return -errno;
|
||||||
|
|
||||||
// arbitrary value which seems to be enough for s-d messages
|
// arbitrary value which seems to be enough for s-d messages
|
||||||
size_t stateLen = strnlen(state, 128);
|
ssize_t stateLen = strnlen(state, 128);
|
||||||
if (write(fd, state, stateLen) >= 0)
|
if (write(fd, state, stateLen) == stateLen)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return -errno;
|
return -errno;
|
||||||
|
Reference in New Issue
Block a user