mirror of
https://github.com/python/cpython.git
synced 2024-11-28 12:31:14 +08:00
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.
This commit is contained in:
parent
3e4a3dcb23
commit
d61926e6be
@ -4,7 +4,6 @@ Provides the PyPIRCCommand class, the base class for the command classes
|
||||
that uses .pypirc in the distutils.command package.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
from configparser import ConfigParser
|
||||
|
||||
from distutils.cmd import Command
|
||||
@ -43,16 +42,8 @@ class PyPIRCCommand(Command):
|
||||
def _store_pypirc(self, username, password):
|
||||
"""Creates a default .pypirc file."""
|
||||
rc = self._get_rc_file()
|
||||
f = open(rc, 'w')
|
||||
try:
|
||||
with os.fdopen(os.open(rc, os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
|
||||
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):
|
||||
"""Reads the .pypirc file."""
|
||||
|
@ -512,6 +512,7 @@ Zbyszek Jędrzejewski-Szmek
|
||||
Drew Jenkins
|
||||
Flemming Kjær Jensen
|
||||
Philip H. Jensen
|
||||
Philip Jenvey
|
||||
MunSic Jeong
|
||||
Chris Jerdonek
|
||||
Pedro Diaz Jimenez
|
||||
|
@ -177,6 +177,9 @@ Library
|
||||
|
||||
- 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
|
||||
on. Initial patch by SilentGhost and Jeff Ramnani.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user