<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/utils/_os.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>Corrected exception type in safe_join()'s docstring.</title>
<updated>2023-04-20T03:44:01Z</updated>
<author>
<name>David Sanders</name>
<email>shang.xiao.sanders@gmail.com</email>
</author>
<published>2023-04-20T03:44:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=2a577853639a5f2ca14822acc593104f2846597c'/>
<id>urn:sha1:2a577853639a5f2ca14822acc593104f2846597c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #33476 -- Reformatted code with Black.</title>
<updated>2022-02-07T19:37:05Z</updated>
<author>
<name>django-bot</name>
<email>ops@djangoproject.com</email>
</author>
<published>2022-02-03T19:24:19Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=9c19aff7c7561e3a82978a272ecdaad40dda5c00'/>
<id>urn:sha1:9c19aff7c7561e3a82978a272ecdaad40dda5c00</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #30461 -- Added django.utils._os.to_path().</title>
<updated>2019-08-13T15:17:39Z</updated>
<author>
<name>Claude Paroz</name>
<email>claude@2xlibre.net</email>
</author>
<published>2019-08-10T09:28:00Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=88c0b907e76bccfe1a25dc6580272b07aebd45d6'/>
<id>urn:sha1:88c0b907e76bccfe1a25dc6580272b07aebd45d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #27753 -- Removed django.utils._os.abspathu(), upath(), and npath().</title>
<updated>2019-02-05T17:57:11Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2019-02-05T00:50:30Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=efe28d3f566a00e76ae589a3f93be8079a638ca8'/>
<id>urn:sha1:efe28d3f566a00e76ae589a3f93be8079a638ca8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #27795 -- Removed force_bytes() usage in utils/_os.py.</title>
<updated>2018-09-25T15:27:36Z</updated>
<author>
<name>Jon Dufresne</name>
<email>jon.dufresne@gmail.com</email>
</author>
<published>2018-09-25T15:27:36Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=bb81c22d90e5eb168544670ead1a13aa9695fed5'/>
<id>urn:sha1:bb81c22d90e5eb168544670ead1a13aa9695fed5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #27656 -- Updated django.utils docstring verbs according to PEP 257.</title>
<updated>2017-02-11T21:11:08Z</updated>
<author>
<name>Anton Samarchyan</name>
<email>anton.samarchyan@savoirfairelinux.com</email>
</author>
<published>2017-01-24T20:32:33Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=9718fa2e8abe430c3526a9278dd976443d4ae3c6'/>
<id>urn:sha1:9718fa2e8abe430c3526a9278dd976443d4ae3c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #23919 -- Replaced tempfile.mkdtemp() with TemporaryDirectory() context manager.</title>
<updated>2017-01-26T18:54:16Z</updated>
<author>
<name>Chillar Anand</name>
<email>anand21nanda@gmail.com</email>
</author>
<published>2017-01-26T18:54:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=6478e07a62ce968f33e71a345e561bce36923f8e'/>
<id>urn:sha1:6478e07a62ce968f33e71a345e561bce36923f8e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #23919 -- Removed django.utils._os.upath()/npath()/abspathu() usage.</title>
<updated>2017-01-20T13:01:02Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2017-01-20T13:01:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=4e729feaa647547f25debb1cb63dec989dc41a20'/>
<id>urn:sha1:4e729feaa647547f25debb1cb63dec989dc41a20</id>
<content type='text'>
These functions do nothing on Python 3.</content>
</entry>
</feed>
