6rd: Clear correct IPv6 address bits in 6rdcalc
authorSteven Barth <cyrus@openwrt.org>
Sat, 16 Nov 2013 09:18:14 +0000 (09:18 +0000)
committerSteven Barth <cyrus@openwrt.org>
Sat, 16 Nov 2013 09:18:14 +0000 (09:18 +0000)
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

index 56e07d255b70c6576bc17e282feb02880ad9a6a7..87bc397006bd937500c6d8ab738b1137db4fa137 100644 (file)
@@ -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;