diff options
| -rw-r--r-- | ospfd/ChangeLog | 9 | ||||
| -rw-r--r-- | ospfd/ospf_dump.h | 3 | ||||
| -rw-r--r-- | ospfd/ospf_vty.c | 20 | 
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)  | 
