https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88226

--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> ---
Author: msebor
Date: Fri Nov 22 16:47:22 2019
New Revision: 278623

URL: https://gcc.gnu.org/viewcvs?rev=278623&root=gcc&view=rev
Log:
PR middle-end/88226 - missing warning on fprintf, fputs, and puts with an
unterminated array

gcc/ChangeLog:

        PR middle-end/88226
        * builtins.c (check_nul_terminated_array): New function.
        (fold_builtin_0): Remove declaration.
        (fold_builtin_1): Same.
        (fold_builtin_2): Same.
        (fold_builtin_3): Same.
        (fold_builtin_strpbrk): Add argument.
        (fold_builtin_strspn): Same.
        (fold_builtin_strcspn): Same.
        (expand_builtin_strcat): Call it.  Remove unused argument.
        (expand_builtin_stpncpy): Same.
        (expand_builtin_strncat): Same.
        (expand_builtin_strncpy): Same.  Adjust indentation.
        (expand_builtin_strcmp): Same.
        (expand_builtin_strncmp): Same.
        (expand_builtin_fork_or_exec): Same.
        (expand_builtin): Handle more built-ins.
        (fold_builtin_2): Add argument.
        (fold_builtin_n): Make static.  Add argument.
        (fold_call_expr): Pass new argument to fold_builtin_n and
fold_builtin_2.
        (fold_builtin_call_array): Pass new argument to fold_builtin_n.
        (fold_builtin_strpbrk): Add argument.  Call check_nul_terminated_array.
        (fold_call_stmt): Pass new argument to fold_builtin_n.
        * builtins.h: Correct a comment.
        * gimple-fold.c (gimple_fold_builtin_strchr): Call
        check_nul_terminated_array.
        * tree-ssa-strlen.c (handle_builtin_strlen): Call
        check_nul_terminated_array.
        (handle_builtin_strchr): Same.
        (handle_builtin_string_cmp): Same.

gcc/testsuite/ChangeLog:

        PR middle-end/88226
        * gcc.dg/Wstringop-overflow-22.c: New test.
        * gcc.dg/tree-ssa/builtin-fprintf-warn-1.c: Remove xfails.


Added:
    trunk/gcc/testsuite/gcc.dg/Wstringop-overflow-22.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtins.c
    trunk/gcc/builtins.h
    trunk/gcc/gimple-fold.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-warn-1.c
    trunk/gcc/tree-ssa-strlen.c

Reply via email to