mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed CVE-2024-39330 -- Added extra file name validation in Storage's save method.
Thanks to Josh Schneier for the report, and to Carlton Gibson and Sarah Boyce for the reviews.
This commit is contained in:
@@ -288,22 +288,17 @@ class FileStorageTests(SimpleTestCase):
|
||||
|
||||
self.storage.delete("path/to/test.file")
|
||||
|
||||
def test_file_save_abs_path(self):
|
||||
test_name = "path/to/test.file"
|
||||
f = ContentFile("file saved with path")
|
||||
f_name = self.storage.save(os.path.join(self.temp_dir, test_name), f)
|
||||
self.assertEqual(f_name, test_name)
|
||||
|
||||
@unittest.skipUnless(
|
||||
symlinks_supported(), "Must be able to symlink to run this test."
|
||||
)
|
||||
def test_file_save_broken_symlink(self):
|
||||
"""A new path is created on save when a broken symlink is supplied."""
|
||||
nonexistent_file_path = os.path.join(self.temp_dir, "nonexistent.txt")
|
||||
broken_symlink_path = os.path.join(self.temp_dir, "symlink.txt")
|
||||
broken_symlink_file_name = "symlink.txt"
|
||||
broken_symlink_path = os.path.join(self.temp_dir, broken_symlink_file_name)
|
||||
os.symlink(nonexistent_file_path, broken_symlink_path)
|
||||
f = ContentFile("some content")
|
||||
f_name = self.storage.save(broken_symlink_path, f)
|
||||
f_name = self.storage.save(broken_symlink_file_name, f)
|
||||
self.assertIs(os.path.exists(os.path.join(self.temp_dir, f_name)), True)
|
||||
|
||||
def test_save_doesnt_close(self):
|
||||
|
||||
Reference in New Issue
Block a user