summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2021-05-17 11:26:36 +0200
committerCarlton Gibson <carlton.gibson@noumenal.es>2021-06-02 10:58:39 +0200
commit46572de2e92fdeaf047f80c44d52269e54ad68db (patch)
treeccda1f219cc9544c506dfd25567f00fd9625da18 /django
parentf66ae7a2d5558fe88ddfe639a610573872be6628 (diff)
Fixed CVE-2021-33203 -- Fixed potential path-traversal via admindocs' TemplateDetailView.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admindocs/views.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/django/contrib/admindocs/views.py b/django/contrib/admindocs/views.py
index 9f66ce8545..ab6e75c811 100644
--- a/django/contrib/admindocs/views.py
+++ b/django/contrib/admindocs/views.py
@@ -15,6 +15,7 @@ from django.db import models
from django.http import Http404
from django.template.engine import Engine
from django.urls import get_mod_func, get_resolver, get_urlconf
+from django.utils._os import safe_join
from django.utils.decorators import method_decorator
from django.utils.functional import cached_property
from django.utils.inspect import (
@@ -333,7 +334,7 @@ class TemplateDetailView(BaseAdminDocsView):
else:
# This doesn't account for template loaders (#24128).
for index, directory in enumerate(default_engine.dirs):
- template_file = Path(directory) / template
+ template_file = Path(safe_join(directory, template))
if template_file.exists():
template_contents = template_file.read_text()
else: