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

Reply via email to