summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ospfd/ChangeLog9
-rw-r--r--ospfd/ospf_dump.h3
-rw-r--r--ospfd/ospf_vty.c20
3 files changed, 19 insertions, 13 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index b33ca438..41453bf9 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,5 +1,14 @@
2005-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+ * ospf_dump.h: Define OSPF_TIME_DUMP_SIZE as appropriate buffer size
+ for use with ospf_timer_dump and ospf_timeval_dump.
+ * ospf_vty.c: Change all buffer sizes used with ospf_timer_dump and
+ ospf_timeval_dump to have size OSPF_TIME_DUMP_SIZE.
+ (show_ip_ospf_interface_sub) Fix possible buffer overflow in
+ call to ospf_timer_dump.
+
+2005-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
* ospf_ism.h: (OSPF_ISM_TIMER_OFF) Improve macro syntax by enclosing
in 'do {...} while(0)'.
diff --git a/ospfd/ospf_dump.h b/ospfd/ospf_dump.h
index e24244ee..fb813719 100644
--- a/ospfd/ospf_dump.h
+++ b/ospfd/ospf_dump.h
@@ -137,4 +137,7 @@ extern void ospf_packet_dump (struct stream *);
extern void ospf_lsa_header_dump (struct lsa_header *);
extern void debug_init (void);
+/* Appropriate buffer size to use with ospf_timer_dump and ospf_timeval_dump: */
+#define OSPF_TIME_DUMP_SIZE 16
+
#endif /* _ZEBRA_OSPF_DUMP_H */
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index e28a89c5..de021bc2 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -2520,7 +2520,7 @@ show_ip_ospf_area (struct vty *vty, struct ospf_area *area)
/* Stub-router state for this area */
if (CHECK_FLAG (area->stub_router_state, OSPF_AREA_IS_STUB_ROUTED))
{
- char timebuf[9];
+ char timebuf[OSPF_TIME_DUMP_SIZE];
vty_out (vty, " Originating stub / maximum-distance Router-LSA%s",
VTY_NEWLINE);
if (CHECK_FLAG(area->stub_router_state, OSPF_AREA_ADMIN_STUB_ROUTED))
@@ -2592,7 +2592,7 @@ DEFUN (show_ip_ospf,
struct ospf_area * area;
struct ospf *ospf;
struct timeval result;
- char timebuf[13]; /* XX:XX:XX.XXX(nul) */
+ char timebuf[OSPF_TIME_DUMP_SIZE];
/* Check OSPF is enable. */
ospf = ospf_lookup ();
@@ -2706,7 +2706,6 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf,
int is_up;
struct ospf_neighbor *nbr;
struct route_node *rn;
- char buf[9];
/* Is interface up? */
vty_out (vty, "%s is %s%s", ifp->name,
@@ -2818,14 +2817,9 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf,
if (OSPF_IF_PARAM (oi, passive_interface) == OSPF_IF_ACTIVE)
{
- int timer_slen = 9; /* length of "hh:mm:ss(nul)" */
-
- /* for fast hello we also want to see the .XXXX ms part */
- if (OSPF_IF_PARAM (oi, fast_hello))
- timer_slen += 5;
-
+ char timebuf[OSPF_TIME_DUMP_SIZE];
vty_out (vty, " Hello due in %s%s",
- ospf_timer_dump (oi->t_hello, buf, timer_slen),
+ ospf_timer_dump (oi->t_hello, timebuf, sizeof(timebuf)),
VTY_NEWLINE);
}
else /* OSPF_IF_PASSIVE is set */
@@ -2884,7 +2878,7 @@ show_ip_ospf_neighbor_sub (struct vty *vty, struct ospf_interface *oi)
struct route_node *rn;
struct ospf_neighbor *nbr;
char msgbuf[16];
- char timebuf[14];
+ char timebuf[OSPF_TIME_DUMP_SIZE];
for (rn = route_top (oi->nbrs); rn; rn = route_next (rn))
if ((nbr = rn->info))
@@ -3035,7 +3029,7 @@ static void
show_ip_ospf_nbr_nbma_detail_sub (struct vty *vty, struct ospf_interface *oi,
struct ospf_nbr_nbma *nbr_nbma)
{
- char timebuf[9];
+ char timebuf[OSPF_TIME_DUMP_SIZE];
/* Show neighbor ID. */
vty_out (vty, " Neighbor %s,", "-");
@@ -3069,7 +3063,7 @@ static void
show_ip_ospf_neighbor_detail_sub (struct vty *vty, struct ospf_interface *oi,
struct ospf_neighbor *nbr)
{
- char timebuf[9];
+ char timebuf[OSPF_TIME_DUMP_SIZE];
/* Show neighbor ID. */
if (nbr->state == NSM_Attempt && nbr->router_id.s_addr == 0)