Potential fix pushed to the experimental branch. Thanks again for reporting.
On 13/01/2021 14:18, Antonio Quartulli wrote: > It turns our this is a bug in my experimental branch :-) > > The object pointed by sa6 is not large enough, hence triggering that error. > > Will come up with a fix. > > Thanks! > > On 13/01/2021 11:17, Tony He wrote: >> Hi Antonio, >> >> Yes, I'm using latest commit. Maybe it's a compiler bug. What's your >> compiler version? >> Here is mine. >> tony-vm-2004% gcc --version >> gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 >> Copyright (C) 2019 Free Software Foundation, Inc. >> This is free software; see the source for copying conditions. There is NO >> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. >> >> >> >> Antonio Quartulli <a...@unstable.cc> 于2021年1月13日周三 下午5:17写道: >> >> Also, >> >> are you sure you are compiling the latest experimental branch? >> HEAD is 2555e5595088991006e57a3ee447f356dffdca92 >> >> Regards, >> >> On 13/01/2021 10:12, Antonio Quartulli wrote: >> > Hi Tony, >> > >> > thanks for the message. >> > The experimental branch is still...experimental, so I expect more >> things >> > to crash and fail miserably :-D >> > >> > In any case, feel free to send a patch if you see how to fix the >> issue! >> > It would be nice to have external contributions :-) >> > >> > This said, I am not sure this is our bug - the sin6_addr member of >> > struct sockaddr_in6 is of type struct sin6_addr: >> > >> > >> https://elixir.bootlin.com/linux/v5.4/source/include/uapi/linux/in6.h#L54 >> >> <https://elixir.bootlin.com/linux/v5.4/source/include/uapi/linux/in6.h#L54> >> > >> > And I believe it is widely known that an IPv6 address is 12 bytes, >> not 8.. >> > >> > Maybe it's a bug in the compiler? >> > >> > Best Regards, >> > >> > On 13/01/2021 10:03, Tony He wrote: >> >> Sorry, clicked "send" button before adding subject and CC >> Openvpn-dev. I >> >> will send a new mail. >> >> >> >> Tony He <huangy...@gmail.com <mailto:huangy...@gmail.com> >> <mailto:huangy...@gmail.com <mailto:huangy...@gmail.com>>> 于2021年1月13 >> >> 日周三 下午4:57写道: >> >> >> >> Hi Antonio, >> >> >> >> I see you have pushed new commits to support multiple link to >> peers. >> >> So I tried compiling, but encounter below error. My kernel >> version >> >> is 5.4.0-54. >> >> >> >> >> >> >> >> tony-vm-2004% make >> >> >> >> >> >> >> >> >> >> >> /project/openvpn/ovpn-dco.git/gen-compat-autoconf.sh >> >> /project/openvpn/ovpn-dco.git/compat-autoconf.h >> >> >> >> >> >> >> >> make -C /lib/modules/5.4.0-54-generic/build >> >> M=/project/openvpn/ovpn-dco.git PWD=/project/openvpn/ovpn-dco.git >> >> REVISION=2555e55 CONFIG_OVPN_DCO=m INSTALL_MOD_DIR=updates/ >> >> modules >> >> make[1]: Entering directory >> >> '/usr/src/linux-headers-5.4.0-54-generic' >> >> >> >> >> >> >> >> CC [M] >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/main.o >> >> >> >> >> >> >> >> >> >> CC [M] >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/bind.o >> >> >> >> >> >> >> >> >> >> CC [M] >> >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/crypto.o >> >> >> >> >> >> >> >> CC [M] >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/ovpn.o >> >> >> >> >> >> >> >> >> >> CC [M] >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.o >> >> >> >> >> >> >> >> >> >> In file included from ./include/linux/bitmap.h:9, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/cpumask.h:12, >> >> >> >> >> >> >> >> >> >> >> from ./arch/x86/include/asm/cpumask.h:5, >> >> >> >> >> >> >> >> >> >> >> from ./arch/x86/include/asm/msr.h:11, >> >> >> >> >> >> >> >> >> >> >> from ./arch/x86/include/asm/processor.h:21, >> >> >> >> >> >> >> >> >> >> >> from ./arch/x86/include/asm/cpufeature.h:5, >> >> >> >> >> >> >> >> >> >> >> from >> ./arch/x86/include/asm/thread_info.h:53, >> >> >> >> >> >> >> >> >> >> from ./include/linux/thread_info.h:38, >> >> >> >> >> >> >> >> >> >> >> from ./arch/x86/include/asm/preempt.h:7, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/preempt.h:78, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/spinlock.h:51, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/seqlock.h:36, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/time.h:6, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/ktime.h:24, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/timer.h:6, >> >> >> >> >> >> >> >> >> >> >> from ./include/linux/netdevice.h:24, >> >> >> >> >> >> >> >> >> >> >> from >> >> /project/openvpn/ovpn-dco.git/linux-compat.h:20, >> >> >> >> >> >> >> >> from <command-line>: >> >> >> >> >> >> >> >> >> >> >> In function ‘memcmp’, >> >> >> >> >> >> >> >> >> >> >> inlined from ‘ovpn_peer_lookup_transp_addr’ at >> >> >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.c:457:8: >> >> >> >> >> >> >> ./include/linux/string.h:440:4: error: call to ‘__read_overflow’ >> >> declared with attribute error: detected read beyond size of >> object >> >> passed as 1st parameter >> >> >> >> >> 440 | __read_overflow(); >> >> | ^~~~~~~~~~~~~~~~~ >> >> make[3]: *** [scripts/Makefile.build:275: >> >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.o] >> Error 1 >> >> make[2]: *** [scripts/Makefile.build:522: >> >> /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco] Error 2 >> >> make[1]: *** [Makefile:1757: /project/openvpn/ovpn-dco.git] >> Error 2 >> >> make[1]: Leaving directory >> '/usr/src/linux-headers-5.4.0-54-generic' >> >> make: *** [Makefile:46: all] Error 2 >> >> >> >> >> >> Function memcmp >> >> >> in /usr/src/linux-headers-5.4.0-54-generic/include/linux/string.h. >> >> 434 __FORTIFY_INLINE int memcmp(const void *p, const void *q, >> >> __kernel_size_t size) >> >> 435 { >> >> 436 size_t p_size = __builtin_object_size(p, 0); >> >> 437 size_t q_size = __builtin_object_size(q, 0); >> >> 438 if (__builtin_constant_p(size)) { >> >> 439 if (p_size < size) >> >> 440 __read_overflow(); >> >> 441 if (q_size < size) >> >> 442 __read_overflow2(); >> >> 443 } >> >> 444 if (p_size < size || q_size < size) >> >> 445 fortify_panic(__func__); >> >> 446 return __underlying_memcmp(p, q, size); >> >> 447 } >> >> >> >> Seems that p_size is 8 in above memcmp function because if I >> change >> >> your code as below , then it's OK(9 causes same error). >> >> 456 case AF_INET6: >> >> 457 if (memcmp((void *)&sa6->sin6_addr, >> >> (void *)&bind->sa.in6.sin6_addr, >> >> 458 // sizeof(struct >> in6_addr))) >> >> 459 8)) >> >> 460 break; >> >> >> >> Tony >> >> >> > >> >> -- >> Antonio Quartulli >> > -- Antonio Quartulli _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel