From b5a4fb1c95fd2738259456a6e1fd140db3698a21 Mon Sep 17 00:00:00 2001
From: Steven Barth <cyrus@openwrt.org>
Date: Sat, 16 Nov 2013 09:18:14 +0000
Subject: [PATCH] 6rd: Clear correct IPv6 address bits in 6rdcalc

The correct bits are now cleared in the IPv6 address as the shift
value to the correct byte in the IPv6 address was wrong. Depending
on the stack values this could result in a hanging 6rdcalc program
due to an endless loop.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>

SVN-Revision: 38818
---
 package/network/ipv6/6rd/src/6rdcalc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/ipv6/6rd/src/6rdcalc.c b/package/network/ipv6/6rd/src/6rdcalc.c
index 56e07d255b..87bc397006 100644
--- a/package/network/ipv6/6rd/src/6rdcalc.c
+++ b/package/network/ipv6/6rd/src/6rdcalc.c
@@ -110,7 +110,7 @@ int main(int argc, const char **argv)
 
 	/* Clear remaining bits. */
 	while (v6it < 128) {
-		byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 2);
+		byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 3);
 		bit6 = 128 >> (v6it & 0x07);
 
 		*byte6 &= ~bit6;
-- 
GitLab