Skip to content

Fix possible the encoding argument to Popen is only available on Python 3 in switch.py - #90

Open
begininvoke wants to merge 1 commit into
PlatformLab:mainfrom
begininvoke:redgem/security-fix-3c1a3e34
Open

Fix possible the encoding argument to Popen is only available on Python 3 in switch.py#90
begininvoke wants to merge 1 commit into
PlatformLab:mainfrom
begininvoke:redgem/security-fix-3c1a3e34

Conversation

@begininvoke

Copy link
Copy Markdown

Proposing a fix for something flagged in cloudlab/bin/switch.py. It is around line 24.

The code uses the encoding parameter of subprocess.Popen, which was introduced in Python 3.6. If the application runs on Python 3.5 or earlier, the call will raise a TypeError and abort the SSH subprocess creation, leading to a denial‑of‑service condition for any functionality that depends on this subprocess. Because the failure is immediate and can prevent critical operations, the vulnerability is rated as high.

Removed the Python 3.6‑only encoding argument and replaced it with universal_newlines=True, preserving text‑mode I/O while maintaining compatibility with older Python versions.

For reference: rule python.lang.compatibility.python36.python36-compatibility-Popen2. Rated high.

I do not know the codebase, so please check the change fits how the rest of it works. Happy to adjust it or close this if the reasoning is off.


Found with automated scanning (RedGem) and reviewed before opening. If it is not useful, closing it is completely fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant