]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #2223 from ssahani/lldp
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Dec 2015 05:38:05 +0000 (00:38 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Dec 2015 05:40:07 +0000 (00:40 -0500)
Closes #2223.

1  2 
src/libsystemd-network/sd-lldp.c

index d3ea74404b82338e495ed3a326d60182d83de86e,bb4314b967fd8a4b4493e0023d7fcab017d31026..1c696f9ef07a3288ef930f03799a40c55588a1ca
@@@ -299,6 -285,41 +285,41 @@@ int lldp_handle_packet(tlv_packet *tlv
  
                          ttl = true;
  
 -                                log_lldp("Received invalid systemd name length: %d. Dropping.", len);
+                         break;
+                 case LLDP_TYPE_SYSTEM_NAME:
+                         /* According to RFC 1035 the length of a FQDN is limited to 255 characters */
+                         if (len > 255) {
++                                log_lldp("Received invalid system name length: %d. Dropping.", len);
+                                 malformed = true;
+                                 goto out;
+                         }
+                         if (system_name) {
+                                 log_lldp("Duplicate system name found. Dropping.");
+                                 malformed = true;
+                                 goto out;
+                         }
+                         system_name = true;
+                         break;
+                 case LLDP_TYPE_SYSTEM_DESCRIPTION:
+                         /* 0 <= n <= 255 octets */
+                         if (len > 255) {
+                                 log_lldp("Received invalid system description length: %d. Dropping.", len);
+                                 malformed = true;
+                                 goto out;
+                         }
+                         if (system_description) {
+                                 log_lldp("Duplicate system description found. Dropping.");
+                                 malformed = true;
+                                 goto out;
+                         }
+                         system_description = true;
                          break;
                  default: