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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:872693eebb6b88f4b6a2767727a9565d05172768

commit r13-1881-g872693eebb6b88f4b6a2767727a9565d05172768
Author: David Malcolm <dmalc...@redhat.com>
Date:   Thu Jul 28 17:21:29 2022 -0400

    analyzer: new warning: -Wanalyzer-putenv-of-auto-var [PR105893]

    This patch implements a new -fanalyzer warning:
      -Wanalyzer-putenv-of-auto-var
    which complains about stack pointers passed to putenv(3) calls, as
    per SEI CERT C Coding Standard rule POS34-C ("Do not call putenv() with
    a pointer to an automatic variable as the argument").

    For example, given:

    #include <stdio.h>
    #include <stdlib.h>

    void test_arr (void)
    {
      char arr[] = "NAME=VALUE";
      putenv (arr);
    }

    it emits:

    demo.c: In function âtest_arrâ:
    demo.c:7:3: warning: âputenvâ on a pointer to automatic variable
âarrâ [POS34-C] [-Wanalyzer-putenv-of-auto-var]
        7 |   putenv (arr);
          |   ^~~~~~~~~~~~
      âtest_arrâ: event 1
        |
        |    7 |   putenv (arr);
        |      |   ^~~~~~~~~~~~
        |      |   |
        |      |   (1) âputenvâ on a pointer to automatic variable
âarrâ
        |
    demo.c:6:8: note: âarrâ declared on stack here
        6 |   char arr[] = "NAME=VALUE";
          |        ^~~
    demo.c:7:3: note: perhaps use âsetenvâ rather than âputenvâ
        7 |   putenv (arr);
          |   ^~~~~~~~~~~~

    gcc/analyzer/ChangeLog:
            PR analyzer/105893
            * analyzer.opt (Wanalyzer-putenv-of-auto-var): New.
            * region-model-impl-calls.cc (class putenv_of_auto_var): New.
            (region_model::impl_call_putenv): New.
            * region-model.cc (region_model::on_call_pre): Handle putenv.
            * region-model.h (region_model::impl_call_putenv): New decl.

    gcc/ChangeLog:
            PR analyzer/105893
            * doc/invoke.texi: Add -Wanalyzer-putenv-of-auto-var.

    gcc/testsuite/ChangeLog:
            PR analyzer/105893
            * gcc.dg/analyzer/putenv-1.c: New test.

    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Reply via email to