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

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>> 于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


_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to