mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-03 17:42:20 +00:00
Fix: Content-Disposition filename normalization (#13514)
This commit is contained in:
@@ -472,6 +472,31 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
|
||||
self.assertIn("my_document.pdf", response["Content-Disposition"])
|
||||
response.close()
|
||||
|
||||
@override_settings(FILENAME_FORMAT="")
|
||||
def test_download_filename_normalization_does_not_inject_parameters(
|
||||
self,
|
||||
) -> None:
|
||||
doc = Document.objects.create(
|
||||
title="file.doc\uff02; x=\uff02\uff3c",
|
||||
created=date(2020, 1, 2),
|
||||
filename="source.pdf",
|
||||
mime_type="application/pdf",
|
||||
)
|
||||
Path(doc.source_path).write_bytes(b"This is a test")
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/documents/{doc.pk}/download/?original=true",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
response["Content-Disposition"],
|
||||
"attachment; "
|
||||
'filename="2020-01-02 file.doc_; x=__.pdf"; '
|
||||
"filename*=utf-8''2020-01-02%20file.doc%EF%BC%82%3B%20x%3D%EF%BC%82%EF%BC%BC.pdf",
|
||||
)
|
||||
response.close()
|
||||
|
||||
def test_document_actions_not_existing_file(self) -> None:
|
||||
doc = Document.objects.create(
|
||||
title="none",
|
||||
|
||||
@@ -4708,6 +4708,8 @@ def serve_file(
|
||||
"ignore",
|
||||
)
|
||||
.decode("ascii")
|
||||
.replace("\\", "_")
|
||||
.replace('"', "_")
|
||||
)
|
||||
filename_encoded = quote(filename)
|
||||
content_disposition = (
|
||||
|
||||
Reference in New Issue
Block a user