From a9b5a1e506a9e8492407399b8bec1c2a8420be60 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 27 Jun 2013 10:59:30 +0200 Subject: [PATCH] [1.6.x] Do not allow FileSystemStorage.delete to receive an empty name Refs #20660. Backport of 7fbab3eba from master. --- django/core/files/storage.py | 1 + tests/file_storage/tests.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/django/core/files/storage.py b/django/core/files/storage.py index 977b6a68a8..5d301a317c 100644 --- a/django/core/files/storage.py +++ b/django/core/files/storage.py @@ -231,6 +231,7 @@ class FileSystemStorage(Storage): return name def delete(self, name): + assert name, "The name argument is not allowed to be empty." name = self.path(name) # If the file exists, delete it from the filesystem. # Note that there is a race between os.path.exists and os.remove: diff --git a/tests/file_storage/tests.py b/tests/file_storage/tests.py index 6c3c559660..e6caabf9d9 100644 --- a/tests/file_storage/tests.py +++ b/tests/file_storage/tests.py @@ -364,6 +364,14 @@ class FileStorageTests(unittest.TestCase): with self.assertRaises(IOError): self.storage.save('error.file', f1) + def test_delete_no_name(self): + """ + Calling delete with an empty name should not try to remove the base + storage directory, but fail loudly (#20660). + """ + with self.assertRaises(AssertionError): + self.storage.delete('') + class CustomStorage(FileSystemStorage): def get_available_name(self, name):