From a53c72cdab7ea14e4aa0526270febf15a7248759 Mon Sep 17 00:00:00 2001
From: Michael Roth <mroth@nessie.de>
Date: Thu, 29 Oct 2009 14:24:28 +0100
Subject: [PATCH] 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>
---
 src/svf/svf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/svf/svf.c b/src/svf/svf.c
index 276a374eb..9c597bf7d 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;
 	}
 
-- 
GitLab