[WATCHDOG] ib700wdt.c - fix buffer_underflow bug
This fixes Bug 11399: if ibwdt_set_heartbeat(int t) is called with value 30 then the check "if ((t < 0) || (t > 30))" in ibwdt_set_heartbeat is not going to fail because t == 30, but in the loop, the check wd_times[i] > t is never going to be true because none of the wd_times are greater than the value of t (i.e. 30). So we are exiting the loop with i == -1 and therefore setting wd_margin to -1 which is wrong. Reported-by: Zvonimir Rakamaric <zrakamar@cs.ubc.ca> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
This commit is contained in:
parent
278429cff8
commit
7c2500f17d
@ -154,7 +154,7 @@ static int ibwdt_set_heartbeat(int t)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0x0F; i > -1; i--)
|
||||
if (wd_times[i] > t)
|
||||
if (wd_times[i] >= t)
|
||||
break;
|
||||
wd_margin = i;
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user