From: Michael Roth Date: Thu, 29 Oct 2009 13:24:28 +0000 (+0100) Subject: SVF: fix checking bit pattern against length X-Git-Tag: v0.3.0~22 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=a53c72cdab7ea14e4aa0526270febf15a7248759 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 . [dbrownell@users.sourceforge.net: fix spelling bug too] Signed-off-by: Michael Roth Cc: FangfangLi Signed-off-by: David Brownell --- diff --git a/src/svf/svf.c b/src/svf/svf.c index 276a374ebf..9c597bf7d6 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; }