Compare commits
4 Commits
v1.5.4
...
3b030c577c
Author | SHA1 | Date | |
---|---|---|---|
3b030c577c | |||
60b33f2a3b | |||
08fdf59844 | |||
b397515457 |
@ -64,8 +64,6 @@ def __get_next_uri() -> str | None:
|
|||||||
if request.method == "POST" else request.args.get("next")
|
if request.method == "POST" else request.args.get("next")
|
||||||
if next_uri is None or not next_uri.startswith("/"):
|
if next_uri is None or not next_uri.startswith("/"):
|
||||||
return None
|
return None
|
||||||
if len(next_uri) > 512:
|
|
||||||
return next_uri[:512]
|
|
||||||
return next_uri
|
return next_uri
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,9 +25,9 @@ First written: 2023/1/27
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="author" content="{{ "imacat" }}" />
|
<meta name="author" content="{{ "imacat" }}" />
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css" crossorigin="anonymous">
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css" integrity="sha384-iw3OoTErCYJJB9mCa8LNS2hbsQ7M3C0EpIsO/H5+EGAkPGc6rk+V8i04oW/K5xq0" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@eonasdan/tempus-dominus@6.7.7/dist/css/tempus-dominus.min.css" crossorigin="anonymous">
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@eonasdan/tempus-dominus@6.7.7/dist/css/tempus-dominus.min.css" integrity="sha384-l66rSL7gUubrdJxFRbXUo/tO7eNPAcCiZXFs/Xl147146xNqQ1qt4oPW6jlVezsS" crossorigin="anonymous">
|
||||||
{% block styles %}{% endblock %}
|
{% block styles %}{% endblock %}
|
||||||
<script src="{{ url_for("babel_catalog") }}"></script>
|
<script src="{{ url_for("babel_catalog") }}"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
|
||||||
@ -121,10 +121,10 @@ First written: 2023/1/27
|
|||||||
{% if messages %}
|
{% if messages %}
|
||||||
{% for category, message in messages %}
|
{% for category, message in messages %}
|
||||||
{% if category == "success" %}
|
{% if category == "success" %}
|
||||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||||
{{ message }}
|
{{ message }}
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
{% elif category == "error" %}
|
{% elif category == "error" %}
|
||||||
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||||
<strong>{{ _("Error:") }}</strong> {{ message }}
|
<strong>{{ _("Error:") }}</strong> {{ message }}
|
||||||
|
@ -140,21 +140,6 @@ class NextUriTestCase(unittest.TestCase):
|
|||||||
"next": next_uri})
|
"next": next_uri})
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
# An extremely-long URI to trigger the error
|
|
||||||
next_uri = "/" + "x" * 1024
|
|
||||||
expected2 = next_uri[:512]
|
|
||||||
expected1 = f"{self.TARGET}?next={quote_plus(expected2)}"
|
|
||||||
response = client.get(f"/test-invalid-next?next={quote_plus(next_uri)}"
|
|
||||||
f"&inherit-expected={quote_plus(expected1)}"
|
|
||||||
f"&or-expected={quote_plus(expected2)}")
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
response = client.post("/test-invalid-next"
|
|
||||||
f"?inherit-expected={quote_plus(expected1)}"
|
|
||||||
f"&or-expected={quote_plus(expected2)}",
|
|
||||||
data={"csrf_token": csrf_token,
|
|
||||||
"next": next_uri})
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
|
|
||||||
|
|
||||||
class QueryKeywordParserTestCase(unittest.TestCase):
|
class QueryKeywordParserTestCase(unittest.TestCase):
|
||||||
"""The test case for the query keyword parser."""
|
"""The test case for the query keyword parser."""
|
||||||
|
Reference in New Issue
Block a user