summaryrefslogtreecommitdiffstats
path: root/print-ospf.c
diff options
context:
space:
mode:
Diffstat (limited to 'print-ospf.c')
-rw-r--r--print-ospf.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/print-ospf.c b/print-ospf.c
index e6bebed..eae546d 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;