diff options
author | Michael Roth <mroth@nessie.de> | 2009-10-29 14:24:28 +0100 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-10-29 15:39:03 -0700 |
commit | a53c72cdab7ea14e4aa0526270febf15a7248759 (patch) | |
tree | 88ddcd1e0f1107c794c9f139520776b06d55c0be /src/svf | |
parent | 517049dca50fa2af965b2ba9db43d50e65400c3f (diff) | |
download | openocd+libswd-a53c72cdab7ea14e4aa0526270febf15a7248759.tar.gz openocd+libswd-a53c72cdab7ea14e4aa0526270febf15a7248759.tar.bz2 openocd+libswd-a53c72cdab7ea14e4aa0526270febf15a7248759.tar.xz openocd+libswd-a53c72cdab7ea14e4aa0526270febf15a7248759.zip |
SVF: fix checking bit pattern against length
The code works like follow (N = bit_len):
N -1 %4 2<< -1 ~ (binary)
--------------------------------------------------
1 0 0 2 1 1111 1110
2 1 1 4 3 1111 1100
3 2 2 8 7 1111 1000
4 3 3 16 15 1111 0000
5 4 0 2 1 1111 1110
6 5 1 4 3 1111 1100
7 6 2 8 7 1111 1000
8 7 3 16 15 1111 0000
... ... ... ... ... ...
Addresses a bug reported by FangfangLi <ffli@syntest.com.cn>.
[dbrownell@users.sourceforge.net: fix spelling bug too]
Signed-off-by: Michael Roth <mroth@nessie.de>
Cc: FangfangLi <ffli@syntest.com.cn>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/svf')
-rw-r--r-- | src/svf/svf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/svf/svf.c b/src/svf/svf.c index 276a374e..9c597bf7 100644 --- a/src/svf/svf.c +++ b/src/svf/svf.c @@ -685,9 +685,9 @@ static int svf_copy_hexstring_to_binary(char *str, uint8_t **bin, int orig_bit_l str_len--; // check valid - if (str_len > 0 || (ch & ~((1 << (4 - (bit_len % 4))) - 1)) != 0) + if (str_len > 0 || (ch & ~((2 << ((bit_len - 1) % 4)) - 1)) != 0) { - LOG_ERROR("value execede length"); + LOG_ERROR("value execeeds length"); return ERROR_FAIL; } |