mirror of
https://github.com/python/cpython.git
synced 2025-12-10 02:50:09 +00:00
#14984: On POSIX, enforce permissions when reading default .netrc.
Initial patch by Bruno Piguet. This is implemented as if a useful .netrc file could exist without passwords, which is possible in the general case; but in fact our netrc implementation does not support it. Fixing that issue will be an enhancement.
This commit is contained in:
parent
c17a8dfaca
commit
104aab956f
4 changed files with 61 additions and 6 deletions
|
|
@ -5,9 +5,6 @@ temp_filename = support.TESTFN
|
|||
|
||||
class NetrcTestCase(unittest.TestCase):
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(temp_filename)
|
||||
|
||||
def make_nrc(self, test_data):
|
||||
test_data = textwrap.dedent(test_data)
|
||||
mode = 'w'
|
||||
|
|
@ -15,6 +12,7 @@ class NetrcTestCase(unittest.TestCase):
|
|||
mode += 't'
|
||||
with open(temp_filename, mode) as fp:
|
||||
fp.write(test_data)
|
||||
self.addCleanup(os.unlink, temp_filename)
|
||||
return netrc.netrc(temp_filename)
|
||||
|
||||
def test_default(self):
|
||||
|
|
@ -103,6 +101,28 @@ class NetrcTestCase(unittest.TestCase):
|
|||
""", '#pass')
|
||||
|
||||
|
||||
@unittest.skipUnless(os.name == 'posix', 'POSIX only test')
|
||||
def test_security(self):
|
||||
# This test is incomplete since we are normally not run as root and
|
||||
# therefore can't test the file ownership being wrong.
|
||||
d = support.TESTFN
|
||||
os.mkdir(d)
|
||||
self.addCleanup(support.rmtree, d)
|
||||
fn = os.path.join(d, '.netrc')
|
||||
with open(fn, 'wt') as f:
|
||||
f.write("""\
|
||||
machine foo.domain.com login bar password pass
|
||||
default login foo password pass
|
||||
""")
|
||||
with support.EnvironmentVarGuard() as environ:
|
||||
environ.set('HOME', d)
|
||||
os.chmod(fn, 0o600)
|
||||
nrc = netrc.netrc()
|
||||
self.assertEqual(nrc.hosts['foo.domain.com'],
|
||||
('bar', None, 'pass'))
|
||||
os.chmod(fn, 0o622)
|
||||
self.assertRaises(netrc.NetrcParseError, netrc.netrc)
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(NetrcTestCase)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue