]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dhcp-client: port to recvmsg_safe()
authorLennart Poettering <lennart@poettering.net>
Thu, 23 Apr 2020 17:57:53 +0000 (19:57 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 24 Apr 2020 05:40:32 +0000 (07:40 +0200)
Split out of #15457, let's see if this is the culprit of the CI failure.

(also setting green label here, since @keszybz already greenlit it in that other PR)

src/libsystemd-network/sd-dhcp-client.c

index a59ae4767e2b6acd9256b05c600b7cfa0f4ad94c..31416c9f43fdcf1e7f1e6dd381e492df8bfd8f3a 100644 (file)
@@ -1927,14 +1927,14 @@ static int client_receive_message_raw(
 
         iov = IOVEC_MAKE(packet, buflen);
 
-        len = recvmsg(fd, &msg, 0);
-        if (len < 0) {
-                if (IN_SET(errno, EAGAIN, EINTR, ENETDOWN))
-                        return 0;
-
-                return log_dhcp_client_errno(client, errno,
+        len = recvmsg_safe(fd, &msg, 0);
+        if (IN_SET(len, -EAGAIN, -EINTR, -ENETDOWN))
+                return 0;
+        if (len < 0)
+                return log_dhcp_client_errno(client, len,
                                              "Could not receive message from raw socket: %m");
-        } else if ((size_t)len < sizeof(DHCPPacket))
+
+        if ((size_t) len < sizeof(DHCPPacket))
                 return 0;
 
         CMSG_FOREACH(cmsg, &msg)