diff options
author | paul <paul> | 2003-04-03 01:27:01 +0000 |
---|---|---|
committer | paul <paul> | 2003-04-03 01:27:01 +0000 |
commit | 41c9fb34116d6420ee046c9f759f0225860625de (patch) | |
tree | 5a47927d24f9695b375cc16fc2eea81635e0ba23 /ospfd/ospf_lsa.c | |
parent | 8fe04263439c02f3ac5b900aaa4d4ccf22249c18 (diff) | |
download | quagga-41c9fb34116d6420ee046c9f759f0225860625de.tar.bz2 quagga-41c9fb34116d6420ee046c9f759f0225860625de.tar.xz |
From: David Watson <dwatson@eecs.umich.edu>
Subject: [zebra 18573] PATCH ospfd: byte order error in assert statement
I found a bug in the ospfd code tickled this morning by a Type 1
LSA with exactly 62 entries (LSA length of 768, or 0x0300).
A missing ntohs in ospf_lsa.c:ospf_lsa_different() causes an assert
statement to fail, stopping ospfd.
> assert (l1->data->length > OSPF_LSA_HEADER_SIZE);
So, a length of type 768 turns into a length of 3 which is
obviously less than 20.
David
Diffstat (limited to 'ospfd/ospf_lsa.c')
-rw-r--r-- | ospfd/ospf_lsa.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c index e01dbd0d..45b554fb 100644 --- a/ospfd/ospf_lsa.c +++ b/ospfd/ospf_lsa.c @@ -2839,7 +2839,7 @@ ospf_lsa_different (struct ospf_lsa *l1, struct ospf_lsa *l2) if (l1->data->length == 0) return 1; - assert (l1->data->length > OSPF_LSA_HEADER_SIZE); + assert ( ntohs(l1->data->length) > OSPF_LSA_HEADER_SIZE); p1 = (char *) l1->data; p2 = (char *) l2->data; |