Commit a53c72cd authored by Michael Roth's avatar Michael Roth Committed by David Brownell
Browse files

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: default avatarMichael Roth <mroth@nessie.de>
Cc: FangfangLi <ffli@syntest.com.cn>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
parent 517049dc
......@@ -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;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment