Commit 7c2500f1 authored by Wim Van Sebroeck's avatar Wim Van Sebroeck

[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: default avatarZvonimir Rakamaric <zrakamar@cs.ubc.ca>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 278429cf
...@@ -154,7 +154,7 @@ static int ibwdt_set_heartbeat(int t) ...@@ -154,7 +154,7 @@ static int ibwdt_set_heartbeat(int t)
return -EINVAL; return -EINVAL;
for (i = 0x0F; i > -1; i--) for (i = 0x0F; i > -1; i--)
if (wd_times[i] > t) if (wd_times[i] >= t)
break; break;
wd_margin = i; wd_margin = i;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment