On 11/09/2017 04:44 PM, Martin Sebor wrote:

> Attached is another update to the patch with the above.  While
> going through it again I noticed a couple of opportunities to
> handle ranges so I added those as well.  I have retested the
> patch with GDB and Glibc.  They both require minor changes and
> I will submit patches with those once this work is checked in.
> 
> Is this good enough to commit now?
> 
> Martin
> 
> gcc-81117.diff
> 
> 
> PR c/81117 - Improve buffer overflow checking in strncpy
> 
> ada/ChangeLog:
>       PR c/81117
>       * adadecode.c (__gnat_decode): Use memcpy instead of strncpy.
>       * argv.c (__gnat_fill_env): Same.
> 
> fortran/ChangeLog:
>       PR c/81117
>       * decl.c (build_sym): Use memcpy instead of strncpy.
> 
> gcc/ChangeLog:
> 
>       PR c/81117
>       * builtins.c (compute_objsize): Handle arrays that
>       compute_builtin_object_size likes to fail for.  Make extern.
>       * builtins.h (compute_objsize): Declare.
>       (check_strncpy_sizes): New function.
>       (expand_builtin_strncpy): Call check_strncpy_sizes.
>       * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
>       -Wstringop-truncation.
>       (gimple_fold_builtin_strncat): Same.
>       * gimple.c (gimple_build_call_from_tree): Set call location.
>       * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
>       (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
>       (handle_builtin_stxncpy, handle_builtin_strncat): Same.
>       (handle_builtin_strlen): Use strlen_to_stridx.
>       (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
>       stpncpy.
>       Use strlen_to_stridx.
>       (pass_strlen::execute): Release strlen_to_stridx.
>       * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
>       (-Wstringop-truncation): Document new option.
> 
> gcc/c-family/ChangeLog:
> 
>       PR c/81117
>       * c-common.c (catenate_strings): Use memcpy instead of strncpy.
>       * c-warn.c (sizeof_pointer_memaccess_warning): Handle arrays.
>       * c.opt (-Wstringop-truncation): New option.
> 
> gcc/objc/ChangeLog:
> 
>       PR c/81117
>       * objc-encoding.c (encode_type): Use memcpy instead of strncpy.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR c/81117
>       * c-c++-common/Wsizeof-pointer-memaccess3.c: New test.
>       * c-c++-common/Wstringop-overflow.c: Same.
>       * c-c++-common/Wstringop-truncation.c: Same.
>       * c-c++-common/Wsizeof-pointer-memaccess2.c: Adjust.
>       * c-c++-common/attr-nonstring-2.c: New test.
>       * g++.dg/torture/Wsizeof-pointer-memaccess1.C: Adjust.
>       * g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same.
>       * gcc.dg/torture/pr63554.c: Same.
>       * gcc.dg/Walloca-1.c: Disable macro tracking.
OK.  Sorry for the long review cycles on this one.

jeff

Reply via email to