mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
gh-143010: Prevent a TOCTOU issue by only calling open once (#143011)
* gh-143010: Prevent a TOCTOU issue by gh-143010: Prevent a TOCTOU issue by only calling open once RDM: per AZero13's research the 'x' option did not exist when this code was written, This modernization can thus drop the fd trick in _create_carefully and just use open with 'x' to achieve the same goal more securely. Co-authored-by: sobolevn <mail@sobolevn.me>
This commit is contained in:
parent
700e9fad70
commit
a88d1b8dab
2 changed files with 2 additions and 5 deletions
|
|
@ -2181,11 +2181,7 @@ def _unlock_file(f):
|
|||
|
||||
def _create_carefully(path):
|
||||
"""Create a file if it doesn't exist and open for reading and writing."""
|
||||
fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR, 0o666)
|
||||
try:
|
||||
return open(path, 'rb+')
|
||||
finally:
|
||||
os.close(fd)
|
||||
return open(path, 'xb+')
|
||||
|
||||
def _create_temporary(path):
|
||||
"""Create a temp file based on path and open for reading and writing."""
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Fixed a bug in :mod:`mailbox` where the precise timing of an external event could result in the library opening an existing file instead of a file it expected to create.
|
||||
Loading…
Add table
Add a link
Reference in a new issue