On 3/11/19 8:27 PM, Martin Sebor wrote:
> The -Wstringop-truncation handling for strncpy/stpncpy neglects
> to consider that character arrays tracked by the strlen pass
> are not necessarily nul-terminated.  It unconditionally adds
> one when computing the size of each sequence to account for
> the nul.  This leads to false positive warnings when checking
> the validity of indices/pointers computed by the built-ins.
> 
> The attached patch corrects this by adding one for the nul
> only when the character array is known to be nul-terminated.
> 
> Since GCC 7 does not issue the warning this is a 8/9 regression
> that I would like to fix in both releases.  Is the patch okay
> for trunk/gcc-8-branch?
> 
> Tested on x86_64-linux.
> 
> Martin
> 
> gcc-89644.diff
> 
> PR tree-optimization/89644 - False-positive -Warray-bounds diagnostic on 
> strncpy
> 
> gcc/ChangeLog:
> 
>       PR tree-optimization/89644
>       * tree-ssa-strlen.c (handle_builtin_stxncpy): Consider unterminated
>       arrays in determining sequence sizes in strncpy and stpncpy.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR tree-optimization/89644
>       * gcc.dg/Wstringop-truncation-8.c: New test.
OK for the trunk as well as the affected release branches.

jeff

Reply via email to