python.lang.correctness.file-object-redefined-before-close.file-object-redefined-before-close

profile photo of semgrepsemgrep
Author
7,892
Download Count*

Detected a file object that is redefined and never closed. This could leak file descriptors and unnecessarily consume system resources.

Run Locally

Run in CI

Defintion

rules:
  - id: file-object-redefined-before-close
    patterns:
      - pattern: |
          $F = open($X, ...)
          ...
          $F = open($Y, ...)
      - pattern-not: |
          $F = open($X, ...)
          ...
          $F.close()
          ...
          $F = open($Y, ...)
    message: Detected a file object that is redefined and never closed. This could
      leak file descriptors and unnecessarily consume system resources.
    languages:
      - python
    severity: WARNING
    metadata:
      category: correctness
      technology:
        - python
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

file-object-redefined-before-close.py

def test1():
    # ruleid:file-object-redefined-before-close
    fin = open("file1.txt", 'r')
    data = fin.read()
    fin = open("file2.txt", 'r')
    data2 = fin.read()
    fin.close()

def test2():
    #ok:file-object-redefined-before-close
    fin = open("file1.txt", 'r')
    data = fin.read()
    fin.close()

    fin = open("file2.txt", 'r')
    data2 = fin.read()
    fin.close()