[systemd-commits] 2 commits - src/libsystemd-network src/network

Tom Gundersen tomegun at kemper.freedesktop.org
Tue Apr 8 12:25:47 PDT 2014


 src/libsystemd-network/dhcp-internal.h |    2 -
 src/libsystemd-network/dhcp-packet.c   |   34 ++++++++++++++++-----------------
 src/network/networkd-link.c            |    9 ++++++--
 3 files changed, 25 insertions(+), 20 deletions(-)

New commits:
commit 7ff8f4b53c158833b87899090552b18c922596de
Author: Tom Gundersen <teg at jklm.no>
Date:   Tue Apr 8 21:26:19 2014 +0200

    networkd: guard against NULL pointers
    
    This should never be a problem, but better be safe than sorry.

diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 63d253d..f076525 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1299,6 +1299,7 @@ static int link_getlink_handler(sd_rtnl *rtnl, sd_rtnl_message *m,
         int r;
 
         assert(link);
+        assert(link->ifname);
 
         if (link->state == LINK_STATE_FAILED)
                 return 1;
@@ -1510,11 +1511,16 @@ int link_update(Link *link, sd_rtnl_message *m) {
 int link_save(Link *link) {
         _cleanup_free_ char *temp_path = NULL;
         _cleanup_fclose_ FILE *f = NULL;
+        const char *state;
         int r;
 
         assert(link);
         assert(link->state_file);
 
+        state = link_state_to_string(link->state);
+        if (!state)
+                goto finish;
+
         r = fopen_temporary(link->state_file, &f, &temp_path);
         if (r < 0)
                 goto finish;
@@ -1523,8 +1529,7 @@ int link_save(Link *link) {
 
         fprintf(f,
                 "# This is private data. Do not parse.\n"
-                "STATE=%s\n",
-                link_state_to_string(link->state));
+                "STATE=%s\n", state);
 
         if (link->dhcp_lease) {
                 _cleanup_free_ char *lease_file = NULL;

commit aa6fc9b8c823834f262ab5ab2ac094a3775370a9
Author: Tom Gundersen <teg at jklm.no>
Date:   Mon Apr 7 20:00:53 2014 +0200

    sd-dhcp-client: include client id in debug messages

diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h
index 2188a7f..c0cfa83 100644
--- a/src/libsystemd-network/dhcp-internal.h
+++ b/src/libsystemd-network/dhcp-internal.h
@@ -56,4 +56,4 @@ void dhcp_packet_append_ip_headers(DHCPPacket *packet, be32_t source_addr,
 
 int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum);
 
-#define log_dhcp_client(client, fmt, ...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP CLIENT: " fmt, ##__VA_ARGS__)
+#define log_dhcp_client(client, fmt, ...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP CLIENT (0x%x): " fmt, client->xid, ##__VA_ARGS__)
diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c
index fba9c46..b012e63 100644
--- a/src/libsystemd-network/dhcp-packet.c
+++ b/src/libsystemd-network/dhcp-packet.c
@@ -141,48 +141,48 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
         /* IP */
 
         if (packet->ip.version != IPVERSION) {
-                log_dhcp_client(client, "ignoring packet: not IPv4");
+                log_debug("ignoring packet: not IPv4");
                 return -EINVAL;
         }
 
         if (packet->ip.ihl < 5) {
-                log_dhcp_client(client, "ignoring packet: IPv4 IHL (%u words) invalid",
-                                packet->ip.ihl);
+                log_debug("ignoring packet: IPv4 IHL (%u words) invalid",
+                          packet->ip.ihl);
                 return -EINVAL;
         }
 
         hdrlen = packet->ip.ihl * 4;
         if (hdrlen < 20) {
-                log_dhcp_client(client, "ignoring packet: IPv4 IHL (%zu bytes) "
-                                "smaller than minimum (20 bytes)", hdrlen);
+                log_debug("ignoring packet: IPv4 IHL (%zu bytes) "
+                          "smaller than minimum (20 bytes)", hdrlen);
                 return -EINVAL;
         }
 
         if (len < hdrlen) {
-                log_dhcp_client(client, "ignoring packet: packet (%zu bytes) "
-                                "smaller than expected (%zu) by IP header", len,
-                                hdrlen);
+                log_debug("ignoring packet: packet (%zu bytes) "
+                          "smaller than expected (%zu) by IP header", len,
+                          hdrlen);
                 return -EINVAL;
         }
 
         /* UDP */
 
         if (packet->ip.protocol != IPPROTO_UDP) {
-                log_dhcp_client(client, "ignoring packet: not UDP");
+                log_debug("ignoring packet: not UDP");
                 return -EINVAL;
         }
 
         if (len < hdrlen + be16toh(packet->udp.len)) {
-                log_dhcp_client(client, "ignoring packet: packet (%zu bytes) "
-                                "smaller than expected (%zu) by UDP header", len,
-                                hdrlen + be16toh(packet->udp.len));
+                log_debug("ignoring packet: packet (%zu bytes) "
+                          "smaller than expected (%zu) by UDP header", len,
+                          hdrlen + be16toh(packet->udp.len));
                 return -EINVAL;
         }
 
         if (be16toh(packet->udp.dest) != DHCP_PORT_CLIENT) {
-                log_dhcp_client(client, "ignoring packet: to port %u, which "
-                                "is not the DHCP client port (%u)",
-                                be16toh(packet->udp.dest), DHCP_PORT_CLIENT);
+                log_debug("ignoring packet: to port %u, which "
+                          "is not the DHCP client port (%u)",
+                          be16toh(packet->udp.dest), DHCP_PORT_CLIENT);
                 return -EINVAL;
         }
 
@@ -191,7 +191,7 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
          */
 
         if (dhcp_packet_checksum(&packet->ip, hdrlen)) {
-                log_dhcp_client(client, "ignoring packet: invalid IP checksum");
+                log_debug("ignoring packet: invalid IP checksum");
                 return -EINVAL;
         }
 
@@ -201,7 +201,7 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
 
                 if (dhcp_packet_checksum(&packet->ip.ttl,
                                   be16toh(packet->udp.len) + 12)) {
-                        log_dhcp_client(client, "ignoring packet: invalid UDP checksum");
+                        log_debug("ignoring packet: invalid UDP checksum");
                         return -EINVAL;
                 }
         }



More information about the systemd-commits mailing list