build failure with -D_FORTIFY_SOURCE=2

Vladimir Lettiev thecrux at gmail.com
Mon Oct 26 05:47:22 CET 2015


On Sun, Oct 25, 2015 at 10:32:33PM +0100, Ondrej Zajicek wrote:
> On Sun, Oct 25, 2015 at 05:31:52PM +0300, Vladimir Lettiev wrote:
> > Hi.
> > 
> > Just got a build failure with recent gcc with enabled option FORTIFY_SOURCE=2:
> > 
> > In function 'strncpy',
> >     inlined from 'rip_outgoing_authentication' at ../../../proto/rip/auth.c:134:5:
> > /usr/include/bits/string3.h:120:10: error: call to __builtin___strncpy_chk will always overflow destination buff
> > 
> > There is proto/rip/auth.c:134:
> > 
> >     strncpy( (char *) (&block->packetlen), passwd->password, 16);
> > 
> > destination packetlen is u16, so gcc thinks it is overflow.
> > 
> > Is it possible to change strncpy with memcpy?
> 
> No, memcpy would not work.
> 
> You could replace '(char *) (&block->packetlen)' with:
> 
> (char *) block + OFFSETOF(struct rip_block_auth, packetlen)

Thanks, it worked.

-- 
Vladimir Lettiev aka crux ✉ theCrux at gmail.com


More information about the Bird-users mailing list