On 3/19/19 12:37 PM, Martin Sebor wrote:
> On 3/19/19 12:01 PM, Martin Sebor wrote:
>> On 3/19/19 8:33 AM, Jeff Law wrote:
>>> 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.
>>
>> I just noticed some some -Wrestrict test failures that I had missed
>> in the test report.  The patch wasn't quite right.  Sorry about that.
>> I'll fix it shortly.
> 
> The variable to use to check for nul-termination is full_string_p
> rather than endptr.  I've fixed that in 269809.
ACK.  I'll restart those targets once 269809 lands in the git mirror.

jeff

Reply via email to