aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/tcl.c
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2014-02-04 16:07:57 +0400
committerSpencer Oliver <spen@spen-soft.co.uk>2014-02-24 12:01:52 +0000
commitbb0ef230ca707252cbab93f1eb944b284a3c1e1d (patch)
tree9b9f8ebc301b6b1791a9639c559dadaa76857199 /src/jtag/tcl.c
parent98b808923fbcf806f71aa256684407051008ef03 (diff)
downloadriscv-openocd-bb0ef230ca707252cbab93f1eb944b284a3c1e1d.zip
riscv-openocd-bb0ef230ca707252cbab93f1eb944b284a3c1e1d.tar.gz
riscv-openocd-bb0ef230ca707252cbab93f1eb944b284a3c1e1d.tar.bz2
tcl/drscan: handle invalid syntax with a conditional, not assert
When "drscan" command is used improperly, such as in: drscan stm32f1x.cpu -endstate drpause there're no fields to scan, and so the assert leads to a segfault. This should be treated like any other syntax error instead. Change-Id: Id1743f5d641038e1e3754c6f3097aabc5d1916b9 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/1927 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/tcl.c')
-rw-r--r--src/jtag/tcl.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c
index ceea193..dd2be1e 100644
--- a/src/jtag/tcl.c
+++ b/src/jtag/tcl.c
@@ -169,7 +169,10 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
return JIM_ERR;
num_fields = (argc-2)/2;
- assert(num_fields > 0);
+ if (num_fields <= 0) {
+ Jim_SetResultString(interp, "drscan: no scan fields supplied", -1);
+ return JIM_ERR;
+ }
fields = malloc(sizeof(struct scan_field) * num_fields);
for (i = 2; i < argc; i += 2) {
long bits;