zebra: fix divide-by-zero

x % 0 = FPE

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2017-06-14 14:06:01 +00:00
parent 93f855c24a
commit 6196c77a4f
2 changed files with 13 additions and 21 deletions

View File

@ -476,18 +476,14 @@ DEFUN (ip_irdp_minadvertinterval,
zi=ifp->info;
irdp=&zi->irdp;
if( (unsigned) atoi(argv[idx_number]->arg) <= irdp->MaxAdvertInterval) {
if((unsigned) atoi(argv[idx_number]->arg) < irdp->MaxAdvertInterval) {
irdp->MinAdvertInterval = atoi(argv[idx_number]->arg);
return CMD_SUCCESS;
}
vty_out (vty, "ICMP warning maxadvertinterval is greater or equal than minadvertinterval%s",
VTY_NEWLINE);
vty_out (vty, "Please correct!%s",
VTY_NEWLINE);
return CMD_WARNING;
else {
vty_out (vty, "%% MinAdvertInterval must be less than MaxAdvertInterval");
return CMD_WARNING;
}
}
DEFUN (ip_irdp_maxadvertinterval,
@ -506,19 +502,14 @@ DEFUN (ip_irdp_maxadvertinterval,
zi=ifp->info;
irdp=&zi->irdp;
if( irdp->MinAdvertInterval <= (unsigned) atoi(argv[idx_number]->arg) ) {
irdp->MaxAdvertInterval = atoi(argv[idx_number]->arg);
if(irdp->MinAdvertInterval < (unsigned) atoi(argv[idx_number]->arg)) {
irdp->MaxAdvertInterval = atoi(argv[idx_number]->arg);
return CMD_SUCCESS;
}
vty_out (vty, "ICMP warning maxadvertinterval is greater or equal than minadvertinterval%s",
VTY_NEWLINE);
vty_out (vty, "Please correct!%s",
VTY_NEWLINE);
return CMD_WARNING;
else {
vty_out (vty, "%% MaxAdvertInterval must be greater than MinAdvertInterval");
return CMD_WARNING;
}
}
/* DEFUN needs to be fixed for negative ranages...

View File

@ -234,7 +234,8 @@ int irdp_send_thread(struct thread *t_advert)
}
tmp = irdp->MaxAdvertInterval-irdp->MinAdvertInterval;
timer = (random () % tmp ) + 1;
assert (tmp > 0);
timer = (random () % tmp) + 1;
timer = irdp->MinAdvertInterval + timer;
if(irdp->irdp_sent < MAX_INITIAL_ADVERTISEMENTS &&