Skip to content

Commit c51c15a

Browse files
committed
Python: Add test of routed parameters to *args
Also move the **kwargs and *args test to a more appropriate file
1 parent 5f26790 commit c51c15a

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

python/ql/test/library-tests/frameworks/django-v2-v3/routing_test.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,40 @@ def get(self, request): # $ requestHandler
150150
urlpatterns = [
151151
path("UnknownViewSubclass/", UnknownViewSubclass.as_view()), # $ routeSetup="UnknownViewSubclass/"
152152
]
153+
154+
################################################################################
155+
# Routing to *args and **kwargs
156+
################################################################################
157+
158+
def kwargs_param(request, **kwargs): # $ requestHandler routedParameter=kwargs
159+
ensure_tainted(
160+
kwargs, # $ tainted
161+
kwargs["foo"], # $ tainted
162+
kwargs["bar"] # $ tainted
163+
)
164+
165+
ensure_tainted(request) # $ tainted
166+
167+
168+
def star_args_param(request, *args): # $ requestHandler MISSING: routedParameter=args
169+
ensure_tainted(
170+
args, # $ MISSING: tainted
171+
args[0], # $ MISSING: tainted
172+
args[1], # $ MISSING: tainted
173+
)
174+
ensure_tainted(request) # $ tainted
175+
176+
177+
def star_args_param_check(request, foo, bar): # $ requestHandler routedParameter=foo routedParameter=bar
178+
ensure_tainted(
179+
foo, # $ tainted
180+
bar, # $ tainted
181+
)
182+
ensure_tainted(request) # $ tainted
183+
184+
185+
urlpatterns = [
186+
path("test-kwargs_param/<foo>/<bar>", kwargs_param), # $ routeSetup="test-kwargs_param/<foo>/<bar>"
187+
re_path("test-star_args_param/([^/]+)/(.+)", star_args_param), # $ routeSetup="test-star_args_param/([^/]+)/(.+)"
188+
re_path("test-star_args_param_check/([^/]+)/(.+)", star_args_param_check), # $ routeSetup="test-star_args_param_check/([^/]+)/(.+)"
189+
]

python/ql/test/library-tests/frameworks/django-v2-v3/taint_test.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,8 @@ def some_method(self):
174174
)
175175

176176

177-
def kwargs_param(request, **kwargs): # $ requestHandler routedParameter=kwargs
178-
ensure_tainted(
179-
kwargs, # $ tainted
180-
kwargs["foo"], # $ tainted
181-
kwargs["bar"] # $ tainted
182-
)
183-
184-
ensure_tainted(request) # $ tainted
185-
186-
187177
# fake setup, you can't actually run this
188178
urlpatterns = [
189179
path("test-taint/<foo>/<bar>", test_taint), # $ routeSetup="test-taint/<foo>/<bar>"
190180
path("ClassView/", ClassView.as_view()), # $ routeSetup="ClassView/"
191-
path("test-kwargs_param/<foo>/<bar>", kwargs_param), # $ routeSetup="test-kwargs_param/<foo>/<bar>"
192-
193181
]

0 commit comments

Comments
 (0)