<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/core/files/storage/filesystem.py, branch main</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=main</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2026-03-03T12:09:32Z</updated>
<entry>
<title>Fixed CVE-2026-25674 -- Prevented potentially incorrect permissions on file system object creation.</title>
<updated>2026-03-03T12:09:32Z</updated>
<author>
<name>Natalia</name>
<email>124304+nessita@users.noreply.github.com</email>
</author>
<published>2026-01-21T21:03:20Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=019e44f67a8dace67b786e2818938c8691132988'/>
<id>urn:sha1:019e44f67a8dace67b786e2818938c8691132988</id>
<content type='text'>
This fix introduces `safe_makedirs()` in the `os` utils as a safer
alternative to `os.makedirs()` that avoids umask-related race conditions
in multi-threaded environments.

This is a workaround for https://github.com/python/cpython/issues/86533
and the solution is based on the fix being proposed for CPython.

Co-authored-by: Gregory P. Smith &lt;68491+gpshead@users.noreply.github.com&gt;
Co-authored-by: Zackery Spytz &lt;zspytz@gmail.com&gt;

Refs CVE-2020-24583 and #31921.

Thanks Tarek Nakkouch for the report, and Jake Howard, Jacob Walls, and
Shai Berger for reviews.
</content>
</entry>
<entry>
<title>Refs #36500 -- Rewrapped long docstrings and block comments via a script.</title>
<updated>2025-07-23T23:17:55Z</updated>
<author>
<name>django-bot</name>
<email>ops@djangoproject.com</email>
</author>
<published>2025-07-23T03:41:41Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=69a93a88edb56ba47f624dac7a21aacc47ea474f'/>
<id>urn:sha1:69a93a88edb56ba47f624dac7a21aacc47ea474f</id>
<content type='text'>
Rewrapped long docstrings and block comments to 79 characters + newline
using script from https://github.com/medmunds/autofix-w505.
</content>
</entry>
<entry>
<title>Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc.</title>
<updated>2025-02-18T07:35:36Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-02-18T07:35:36Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=efb7f9ced2dcf71294353596a265e3fd67faffeb'/>
<id>urn:sha1:efb7f9ced2dcf71294353596a265e3fd67faffeb</id>
<content type='text'>
datetime.UTC was added in Python 3.11.</content>
</entry>
<entry>
<title>Fixed #36191 -- Truncated the overwritten file content in FileSystemStorage.</title>
<updated>2025-02-17T13:01:00Z</updated>
<author>
<name>Gaël Utard</name>
<email>gael.utard@eedf.fr</email>
</author>
<published>2025-02-15T14:55:33Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=0d1dd6bba0c18b7feb6caa5cbd8df80fbac54afd'/>
<id>urn:sha1:0d1dd6bba0c18b7feb6caa5cbd8df80fbac54afd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #35326 -- Removed FileSystemStorage.OS_OPEN_FLAGS per deprecation timeline.</title>
<updated>2025-01-15T21:28:37Z</updated>
<author>
<name>Sarah Boyce</name>
<email>42296566+sarahboyce@users.noreply.github.com</email>
</author>
<published>2024-12-12T15:26:06Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=17ae61a5d4ec75ac5e40363cc76b04c191b50d3d'/>
<id>urn:sha1:17ae61a5d4ec75ac5e40363cc76b04c191b50d3d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #35326 -- Adjusted deprecation warning stacklevel in FileSystemStorage.OS_OPEN_FLAGS.</title>
<updated>2024-08-28T14:44:05Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2024-08-09T16:45:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=47f18a722624527cc72eef44cfc9d1e07ea4b4e0'/>
<id>urn:sha1:47f18a722624527cc72eef44cfc9d1e07ea4b4e0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #35604, Refs #35326 -- Made FileSystemStorage.exists() behaviour independent from allow_overwrite.</title>
<updated>2024-07-24T12:55:10Z</updated>
<author>
<name>Sarah Boyce</name>
<email>42296566+sarahboyce@users.noreply.github.com</email>
</author>
<published>2024-07-16T08:41:20Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=8d6a20b656ff3fa18e36954668a44a831c2f6ddd'/>
<id>urn:sha1:8d6a20b656ff3fa18e36954668a44a831c2f6ddd</id>
<content type='text'>
Partially reverts 0b33a3abc2ca7d68a24f6d0772bc2b9fa603744e.

Storage.exists(name) was documented to "return False if
the name is available for a new file." but return True if
the file exists. This is ambiguous in the overwrite file
case. It will now always return whether the file exists.

Thank you to Natalia Bidart and Josh Schneier for the
review.
</content>
</entry>
<entry>
<title>Fixed #35326 -- Added allow_overwrite parameter to FileSystemStorage.</title>
<updated>2024-05-21T05:28:12Z</updated>
<author>
<name>Ben Cail</name>
<email>bcail@crossway.org</email>
</author>
<published>2024-03-26T15:25:29Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=0b33a3abc2ca7d68a24f6d0772bc2b9fa603744e'/>
<id>urn:sha1:0b33a3abc2ca7d68a24f6d0772bc2b9fa603744e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #34110 -- Added StorageSettingsMixin.</title>
<updated>2022-11-11T06:05:00Z</updated>
<author>
<name>Francesco Panico</name>
<email>panico.francesco@gmail.com</email>
</author>
<published>2022-11-11T06:04:18Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=99b4f90ec6b96e8c2a9f22b360d4eb5589763034'/>
<id>urn:sha1:99b4f90ec6b96e8c2a9f22b360d4eb5589763034</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #34110 -- Reorganized django.core.files.storage into a separate module.</title>
<updated>2022-11-11T05:59:33Z</updated>
<author>
<name>Francesco Panico</name>
<email>panico.francesco@gmail.com</email>
</author>
<published>2022-11-10T21:01:53Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=032c09c4144eaa278a64b9a4bef838341b35d175'/>
<id>urn:sha1:032c09c4144eaa278a64b9a4bef838341b35d175</id>
<content type='text'>
</content>
</entry>
</feed>
