content: #
  # Copyright 2014 Hewlett-Packard Development Company, L.P.
  #
  # SPDX-License-Identifier: Apache-2.0
  r"""
  ==============================
  B102: Test for the use of exec
  ==============================
  
  This plugin test checks for the use of Python's `exec` method or keyword. The
  Python docs succinctly describe why the use of `exec` is risky.
  
  :Example:
  
  .. code-block:: none
  
      >> Issue: Use of exec detected.
         Severity: Medium   Confidence: High
         CWE: CWE-78 (https://cwe.mitre.org/data/definitions/78.html)
         Location: ./examples/exec.py:2
      1 exec("do evil")
  
  
  .. seealso::
  
   - https://docs.python.org/3/library/functions.html#exec
   - https://www.python.org/dev/peps/pep-0551/#background
   - https://www.python.org/dev/peps/pep-0578/#suggested-audit-hook-locations
   - https://cwe.mitre.org/data/definitions/78.html
  
  .. versionadded:: 0.9.0
  
  .. versionchanged:: 1.7.3
      CWE information added
  
  """
  import bandit
  from bandit.core import issue
  from bandit.core import test_properties as test
  
  
  def exec_issue():
      return bandit.Issue(
          severity=bandit.MEDIUM,
          confidence=bandit.HIGH,
          cwe=issue.Cwe.OS_COMMAND_INJECTION,
          text="Use of exec detected.",
      )
  
  
  @test.checks("Call")
  @test.test_id("B102")
  def exec_used(context):
      if context.call_function_name_qual == "exec":
          return exec_issue()
  