3131#include "addrtoname.h"
3232#include "gmpls.h"
3333
34+ static const char tstr [] = " [|LMP]" ;
35+
3436/*
3537 * LMP common header
3638 *
@@ -367,6 +369,7 @@ lmp_print_data_link_subobjs(netdissect_options *ndo, const u_char *obj_tptr,
367369 } bw ;
368370
369371 while (total_subobj_len > 0 && hexdump == FALSE ) {
372+ ND_TCHECK_16BITS (obj_tptr + offset );
370373 subobj_type = EXTRACT_8BITS (obj_tptr + offset );
371374 subobj_len = EXTRACT_8BITS (obj_tptr + offset + 1 );
372375 ND_PRINT ((ndo , "\n\t Subobject, Type: %s (%u), Length: %u" ,
@@ -389,11 +392,13 @@ lmp_print_data_link_subobjs(netdissect_options *ndo, const u_char *obj_tptr,
389392 }
390393 switch (subobj_type ) {
391394 case INT_SWITCHING_TYPE_SUBOBJ :
395+ ND_TCHECK_8BITS (obj_tptr + offset + 2 );
392396 ND_PRINT ((ndo , "\n\t Switching Type: %s (%u)" ,
393397 tok2str (gmpls_switch_cap_values ,
394398 "Unknown" ,
395399 EXTRACT_8BITS (obj_tptr + offset + 2 )),
396400 EXTRACT_8BITS (obj_tptr + offset + 2 )));
401+ ND_TCHECK_8BITS (obj_tptr + offset + 3 );
397402 ND_PRINT ((ndo , "\n\t Encoding Type: %s (%u)" ,
398403 tok2str (gmpls_encoding_values ,
399404 "Unknown" ,
@@ -403,11 +408,13 @@ lmp_print_data_link_subobjs(netdissect_options *ndo, const u_char *obj_tptr,
403408 bw .i = EXTRACT_32BITS (obj_tptr + offset + 4 );
404409 ND_PRINT ((ndo , "\n\t Min Reservable Bandwidth: %.3f Mbps" ,
405410 bw .f * 8 /1000000 ));
411+ ND_TCHECK_32BITS (obj_tptr + offset + 8 );
406412 bw .i = EXTRACT_32BITS (obj_tptr + offset + 8 );
407413 ND_PRINT ((ndo , "\n\t Max Reservable Bandwidth: %.3f Mbps" ,
408414 bw .f * 8 /1000000 ));
409415 break ;
410416 case WAVELENGTH_SUBOBJ :
417+ ND_TCHECK_32BITS (obj_tptr + offset + 4 );
411418 ND_PRINT ((ndo , "\n\t Wavelength: %u" ,
412419 EXTRACT_32BITS (obj_tptr + offset + 4 )));
413420 break ;
@@ -1141,7 +1148,7 @@ lmp_print(netdissect_options *ndo,
11411148 }
11421149 return ;
11431150trunc :
1144- ND_PRINT ((ndo , "\n\t\t packet exceeded snapshot" ));
1151+ ND_PRINT ((ndo , "%s" , tstr ));
11451152}
11461153/*
11471154 * Local Variables:
0 commit comments