mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-20 13:01:56 +00:00
Reject null characters in redirect URLs
This commit is contained in:
parent
51ee04db42
commit
1aaad64a6f
2 changed files with 16 additions and 0 deletions
|
|
@ -15,6 +15,9 @@ else:
|
|||
|
||||
|
||||
def _get_redirect(request, path):
|
||||
if '\0' in path: # reject URLs with null characters, which crash on Postgres (#4496)
|
||||
return None
|
||||
|
||||
try:
|
||||
return models.Redirect.get_for_site(request.site).get(old_path=path)
|
||||
except models.Redirect.MultipleObjectsReturned:
|
||||
|
|
|
|||
|
|
@ -273,6 +273,19 @@ class TestRedirects(TestCase):
|
|||
|
||||
self.assertRedirects(response, '/redirectto', status_code=301, fetch_redirect_response=False)
|
||||
|
||||
def test_reject_null_characters(self):
|
||||
response = self.client.get('/test%00test/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
response = self.client.get('/test\0test/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
response = self.client.get('/test/?foo=%00bar')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
response = self.client.get('/test/?foo=\0bar')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
|
||||
class TestRedirectsIndexView(TestCase, WagtailTestUtils):
|
||||
def setUp(self):
|
||||
|
|
|
|||
Loading…
Reference in a new issue