]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-icmp.c
ESP: Add a const qualifier
[tcpdump] / print-icmp.c
index c77c3a4ff2d12abec35a7660443020adee60ab8f..124fc05d418862d299ecadefe587900a9d8237d8 100644 (file)
@@ -849,11 +849,27 @@ icmp_print(netdissect_options *ndo, const u_char *bp, u_int plen, const u_char *
                         offset += 4;
                     }
                     if (name_flag) {
+                        uint8_t inft_name_length_field;
+
                         ifname_subobj = (const struct icmp_interface_identification_ifname_subobject_t *) offset;
-                        ND_PRINT("\n\t\t Interface Name: %.*s",
-                                 GET_U_1(ifname_subobj->length),
-                                         ifname_subobj->if_name);
-                        offset += 1 + GET_U_1(ifname_subobj->length);
+                        inft_name_length_field = GET_U_1(ifname_subobj->length);
+                        ND_PRINT("\n\t\t Interface Name");
+                        if (inft_name_length_field % 4 != 0) {
+                            ND_PRINT(" [length %u != N x 4]", inft_name_length_field);
+                            nd_print_invalid(ndo);
+                            offset += inft_name_length_field;
+                            break;
+                        }
+                        if (inft_name_length_field > 64) {
+                            ND_PRINT(" [length %u > 64]", inft_name_length_field);
+                            nd_print_invalid(ndo);
+                            offset += inft_name_length_field;
+                            break;
+                        }
+                        ND_PRINT(", length %u: ", inft_name_length_field);
+                        nd_printjnp(ndo, ifname_subobj->if_name,
+                                    inft_name_length_field - 1);
+                        offset += inft_name_length_field;
                     }
                     if (mtu_flag) {
                         ND_PRINT("\n\t\t MTU: %u", GET_BE_U_4(offset));