diff options
author | Joseph Mingrone <jrm@FreeBSD.org> | 2024-09-06 02:11:27 +0000 |
---|---|---|
committer | Joseph Mingrone <jrm@FreeBSD.org> | 2024-09-06 02:36:15 +0000 |
commit | 75d9de99aec2d9f3bdc495c91bbd6d7a2392e2a3 (patch) | |
tree | 99d6c086833d530e5d1d33a8128961f8149843f0 /print-ospf.c | |
parent | 51a183021fce3928d24b11c319d2787f5a15ae87 (diff) |
Diffstat (limited to 'print-ospf.c')
-rw-r--r-- | print-ospf.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/print-ospf.c b/print-ospf.c index e6bebed374f8..eae546d9c296 100644 --- a/print-ospf.c +++ b/print-ospf.c @@ -23,9 +23,7 @@ /* \summary: Open Shortest Path First (OSPF) printer */ -#ifdef HAVE_CONFIG_H #include <config.h> -#endif #include "netdissect-stdinc.h" @@ -844,6 +842,11 @@ ospf_print_lsa(netdissect_options *ndo, break; } + + /* in OSPF everything has to be 32-bit aligned, including TLVs */ + if (tlv_length % 4) { + tlv_length += (4 - (tlv_length % 4)); + } tptr+=tlv_length; ls_length_remaining-=tlv_length; } @@ -1067,7 +1070,8 @@ ospf_decode_v2(netdissect_options *ndo, case OSPF_TYPE_LS_ACK: lshp = op->ospf_lsa.lsa_lshdr; - while (ospf_print_lshdr(ndo, lshp) != -1) { + while ((const u_char *)lshp < dataend) { + ospf_print_lshdr(ndo, lshp); ++lshp; } break; |