Skip to content
Snippets Groups Projects
Commit 02192f6b authored by Stefan Mahr's avatar Stefan Mahr Committed by Spencer Oliver
Browse files

jtag: opendous: fix tap buffer overflow


Appending bits to TAP buffer doesn't check if there's enough space left.
This patch adds this check to fix TAP overflow error.

Change-Id: If80d5ab4a24983ad24f3cab31f9676d1590ebf5d
Signed-off-by: default avatarStefan Mahr <stefan.mahr@sphairon.com>
Reviewed-on: http://openocd.zylin.com/1216


Tested-by: jenkins
Reviewed-by: default avatarSpencer Oliver <spen@spen-soft.co.uk>
parent 9b6de72c
Branches
Tags
No related merge requests found
...@@ -482,8 +482,9 @@ void opendous_tap_init(void) ...@@ -482,8 +482,9 @@ void opendous_tap_init(void)
void opendous_tap_ensure_space(int scans, int bits) void opendous_tap_ensure_space(int scans, int bits)
{ {
int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length; int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length;
int available_bits = OPENDOUS_TAP_BUFFER_SIZE / 2 - tap_length;
if (scans > available_scans) if ((scans > available_scans) || (bits > available_bits))
opendous_tap_execute(); opendous_tap_execute();
} }
...@@ -493,6 +494,8 @@ void opendous_tap_append_step(int tms, int tdi) ...@@ -493,6 +494,8 @@ void opendous_tap_append_step(int tms, int tdi)
unsigned char _tms = tms ? 1 : 0; unsigned char _tms = tms ? 1 : 0;
unsigned char _tdi = tdi ? 1 : 0; unsigned char _tdi = tdi ? 1 : 0;
opendous_tap_ensure_space(0, 1);
int tap_index = tap_length / 4; int tap_index = tap_length / 4;
int bits = (tap_length % 4) * 2; int bits = (tap_length % 4) * 2;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment