ND_PRINT((ndo, "MPLS"));
do {
ND_TCHECK2(*p, sizeof(label_entry));
+ if (length < sizeof(label_entry)) {
+ ND_PRINT((ndo, "[|MPLS], length %u", length));
+ return;
+ }
label_entry = EXTRACT_32BITS(p);
ND_PRINT((ndo, "%s(label %u",
(label_stack_depth && ndo->ndo_vflag) ? "\n\t" : " ",
ND_PRINT((ndo, ", ttl %u)", MPLS_TTL(label_entry)));
p += sizeof(label_entry);
+ length -= sizeof(label_entry);
} while (!MPLS_STACK(label_entry));
/*
* Cisco sends control-plane traffic MPLS-encapsulated in
* this fashion.
*/
+ ND_TCHECK(*p);
+ if (length < 1) {
+ /* nothing to print */
+ return;
+ }
switch(*p) {
case 0x45:
udp-length-heapoverflow udp-length-heapoverflow.pcap udp-length-heapoverflow.out -t -v -n
aarp-heapoverflow-1 aarp-heapoverflow-1.pcap aarp-heapoverflow-1.out -t -v -n
aarp-heapoverflow-2 aarp-heapoverflow-2.pcap aarp-heapoverflow-2.out -t -v -n
+mpls-label-heapoverflow mpls-label-heapoverflow.pcap mpls-label-heapoverflow.out -t -v -n
--- /dev/null
+MPLS (label 197379, exp 0, ttl 48)
+ (label 197387, exp 5, [S], ttl 48)[|MPLS]