Commit fcbf77bf authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman

Staging: ft1000-usb: fix array overflow

The code here is supposed checking if we exited the loop without hitting
a break.  The problem is that in the error handling "i" is out of bounds
and it corrupts memory when we do an info->app_info[i].nRxMsgMiss++.
>From the comments, it looks like someone noticed this corruption and
updated the code, but didn't totally fix the problem.  The correct fix
is just to remove nRxMsgMiss++ from the error path.

I believe this bug can be triggered remotely.
Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4073f1b6
......@@ -2615,8 +2615,7 @@ int ft1000_poll(void* dev_id) {
}
}
if (i==(MAX_NUM_APP-1)) { // aelias [+] reason: was out of array boundary
info->app_info[i].nRxMsgMiss++;
if (i == MAX_NUM_APP) {
DEBUG("FT1000:ft1000_parse_dpram_msg: No application matching id = %d\n", ppseudo_hdr->portdest);
// Put memory back to free pool
ft1000_free_buffer(pdpram_blk, &freercvpool);
......
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