Avoid dereferencing NULL pointer.

If a NULL pointer is passed, don't attempt to increment it.  This avoids
passing the now not-NULL pointer on and eventually segfaulting.  Also
remove some unnecessary temporary variables.

Change-Id: I268e225121aa283d59179bfae407ebf6959d3a4e
Signed-off-by: Darius Rad <darius@bluespec.com>
Reviewed-on: http://openocd.zylin.com/4550
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
bscan_tunnel
Darius Rad 2018-05-22 16:38:57 -04:00 committed by Tomas Vanek
parent 42097baf19
commit fe38562dbe
1 changed files with 5 additions and 8 deletions

View File

@ -204,23 +204,20 @@ static int jtag_vpi_queue_tdi_xfer(uint8_t *bits, int nb_bits, int tap_shift)
static int jtag_vpi_queue_tdi(uint8_t *bits, int nb_bits, int tap_shift) static int jtag_vpi_queue_tdi(uint8_t *bits, int nb_bits, int tap_shift)
{ {
int nb_xfer = DIV_ROUND_UP(nb_bits, XFERT_MAX_SIZE * 8); int nb_xfer = DIV_ROUND_UP(nb_bits, XFERT_MAX_SIZE * 8);
uint8_t *xmit_buffer = bits;
int xmit_nb_bits = nb_bits;
int i = 0;
int retval; int retval;
while (nb_xfer) { while (nb_xfer) {
if (nb_xfer == 1) { if (nb_xfer == 1) {
retval = jtag_vpi_queue_tdi_xfer(&xmit_buffer[i], xmit_nb_bits, tap_shift); retval = jtag_vpi_queue_tdi_xfer(bits, nb_bits, tap_shift);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
} else { } else {
retval = jtag_vpi_queue_tdi_xfer(&xmit_buffer[i], XFERT_MAX_SIZE * 8, NO_TAP_SHIFT); retval = jtag_vpi_queue_tdi_xfer(bits, XFERT_MAX_SIZE * 8, NO_TAP_SHIFT);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
xmit_nb_bits -= XFERT_MAX_SIZE * 8; nb_bits -= XFERT_MAX_SIZE * 8;
i += XFERT_MAX_SIZE; if (bits)
bits += XFERT_MAX_SIZE;
} }
nb_xfer--; nb_xfer--;