- TCHECK2(*p, sizeof(label_entry));
- label_entry = EXTRACT_32BITS(p);
- printf("%s(label %u",
- (label_stack_depth && vflag) ? "\n\t" : " ",
- MPLS_LABEL(label_entry));
+ ND_TCHECK2(*p, sizeof(label_entry));
+ if (length < sizeof(label_entry)) {
+ ND_PRINT((ndo, "[|MPLS], length %u", length));
+ return;
+ }
+ label_entry = EXTRACT_BE_U_4(p);
+ ND_PRINT((ndo, "%s(label %u",
+ (label_stack_depth && ndo->ndo_vflag) ? "\n\t" : " ",
+ MPLS_LABEL(label_entry)));