On 17/06/2010 09:16, Marc Pignat wrote:

---
  src/jtag/drivers/ft2232.c |   19 ++++++++++---------
  1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c
index bc8463e..9d40b1c 100644
--- a/src/jtag/drivers/ft2232.c
+++ b/src/jtag/drivers/ft2232.c
@@ -714,23 +714,24 @@ static void ft2232_end_state(tap_state_t state)

  static void ft2232_read_scan(enum scan_type type, uint8_t* buffer, int 
scan_size)
  {
-       int num_bytes = (scan_size + 7) / 8;
-       int bits_left = scan_size;
-       int cur_byte  = 0;
+       int num_bytes = scan_size / 8;
+       int bits_left = scan_size % 8;
+       int cur_byte;

-       while (num_bytes-->  1)
+       for (cur_byte = 0; cur_byte<  num_bytes; cur_byte++)
        {
-               buffer[cur_byte++] = buffer_read();
-               bits_left -= 8;
+               buffer[cur_byte] = buffer_read();
        }

-       buffer[cur_byte] = 0x0;
-
-       /* There is one more partial byte left from the clock data in/out 
instructions */
+       /* Manage partial byte left from the clock data in/out instructions, if 
any */
        if (bits_left>  1)
        {
                buffer[cur_byte] = buffer_read()>>  1;
        }
+       else
+       {
+               buffer[cur_byte] = 0x0;
+       }
        /* This shift depends on the length of the clock data to tms 
instruction, insterted at end of the scan, now fixed to a two step transition 
in ft2232_add_scan */
        buffer[cur_byte] = (buffer[cur_byte] | (((buffer_read())<<  1)&  
0x80))>>  (8 - bits_left);
  }
--
1.7.1


This breaks all my ftdi adapters under win32.

Looking closer it actually introduces a overflow segfault when tested under valgrind. After leaving the for loop cur_byte is always out of bounds.

Ran out of time attempting to fix, so I propose this patch is reverted any objections.

Cheers
Spen
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to