ospfd: Fixes a crash of the daemon with a snmp walk

- And allows to walk the LSDB.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
This commit is contained in:
Jorge Boncompte [DTI2] 2012-04-09 18:03:57 +02:00 committed by David Lamparter
parent 3cadc0cdeb
commit 7939e016b3

View File

@ -934,7 +934,7 @@ ospfLsdbLookup (struct variable *v, oid *name, size_t *length,
struct ospf *ospf; struct ospf *ospf;
struct ospf_area *area; struct ospf_area *area;
struct ospf_lsa *lsa; struct ospf_lsa *lsa;
unsigned int len; int len;
int type_next; int type_next;
int ls_id_next; int ls_id_next;
int router_id_next; int router_id_next;
@ -992,7 +992,7 @@ ospfLsdbLookup (struct variable *v, oid *name, size_t *length,
if (len == IN_ADDR_SIZE) if (len == IN_ADDR_SIZE)
area = ospf_area_lookup_by_area_id (ospf, *area_id); area = ospf_area_lookup_by_area_id (ospf, *area_id);
else else
area = ospf_area_lookup_next (ospf, area_id, len == 0 ? 1 : 0); area = ospf_area_lookup_next (ospf, area_id, 1);
if (area == NULL) if (area == NULL)
return NULL; return NULL;
@ -1000,8 +1000,8 @@ ospfLsdbLookup (struct variable *v, oid *name, size_t *length,
do do
{ {
/* Next we lookup type. */ /* Next we lookup type. */
offset += IN_ADDR_SIZE; offset += len;
offsetlen -= IN_ADDR_SIZE; offsetlen -= len;
len = offsetlen; len = offsetlen;
if (len <= 0) if (len <= 0)