Kaydet (Commit) d61926e6 authored tarafından Éric Araujo's avatar Éric Araujo

Create ~/.pypirc securely (#13512).

There was a window between the write and the chmod where the user’s
password would be exposed, depending on default permissions.  Philip
Jenvey’s patch fixes it.
üst 3e4a3dcb
...@@ -4,7 +4,6 @@ Provides the PyPIRCCommand class, the base class for the command classes ...@@ -4,7 +4,6 @@ Provides the PyPIRCCommand class, the base class for the command classes
that uses .pypirc in the distutils.command package. that uses .pypirc in the distutils.command package.
""" """
import os import os
import sys
from configparser import ConfigParser from configparser import ConfigParser
from distutils.cmd import Command from distutils.cmd import Command
...@@ -43,16 +42,8 @@ class PyPIRCCommand(Command): ...@@ -43,16 +42,8 @@ class PyPIRCCommand(Command):
def _store_pypirc(self, username, password): def _store_pypirc(self, username, password):
"""Creates a default .pypirc file.""" """Creates a default .pypirc file."""
rc = self._get_rc_file() rc = self._get_rc_file()
f = open(rc, 'w') with os.fdopen(os.open(rc, os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
try:
f.write(DEFAULT_PYPIRC % (username, password)) f.write(DEFAULT_PYPIRC % (username, password))
finally:
f.close()
try:
os.chmod(rc, 0o600)
except OSError:
# should do something better here
pass
def _read_pypirc(self): def _read_pypirc(self):
"""Reads the .pypirc file.""" """Reads the .pypirc file."""
......
...@@ -512,6 +512,7 @@ Zbyszek Jędrzejewski-Szmek ...@@ -512,6 +512,7 @@ Zbyszek Jędrzejewski-Szmek
Drew Jenkins Drew Jenkins
Flemming Kjær Jensen Flemming Kjær Jensen
Philip H. Jensen Philip H. Jensen
Philip Jenvey
MunSic Jeong MunSic Jeong
Chris Jerdonek Chris Jerdonek
Pedro Diaz Jimenez Pedro Diaz Jimenez
......
...@@ -177,6 +177,9 @@ Library ...@@ -177,6 +177,9 @@ Library
- Issue #16628: Fix a memory leak in ctypes.resize(). - Issue #16628: Fix a memory leak in ctypes.resize().
- Issue #13512: Create ~/.pypirc securely (CVE-2011-4944). Initial patch by
Philip Jenvey, tested by Mageia and Debian.
- Issue #7719: Make distutils ignore ``.nfs*`` files instead of choking later - Issue #7719: Make distutils ignore ``.nfs*`` files instead of choking later
on. Initial patch by SilentGhost and Jeff Ramnani. on. Initial patch by SilentGhost and Jeff Ramnani.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment