File tree Expand file tree Collapse file tree
python/ql/src/experimental/Security/CWE-730/unit_tests Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- # move outside test folder
2-
31from flask import request , Flask
42import re
53
86
97@app .route ("/direct" )
108def direct ():
11- pattern = request .args ['pattern' ]
12- re .search (pattern , "" )
9+ """
10+ A RemoteFlowSource is used directly as re.search's pattern
11+ """
12+
13+ unsafe_pattern = request .args ["pattern" ]
14+ re .search (unsafe_pattern , "" )
15+
1316
17+ # A RemoteFlowSource is used directly as re.compile's pattern
1418
1519@app .route ("/compile" )
1620def compile ():
17- pattern = re .compile (request .args ['pattern' ])
18- pattern .search ("" )
21+ """
22+ A RemoteFlowSource is used directly as re.compile's pattern
23+ which also executes .search()
24+ """
25+
26+ unsafe_pattern = request .args ["pattern" ]
27+ compiled_pattern = re .compile (unsafe_pattern )
28+ compiled_pattern .search ("" )
1929
2030
2131@app .route ("/compile_direct" )
2232def compile_direct ():
23- re .compile (request .args ['pattern' ]).search ("" )
33+ """
34+ A RemoteFlowSource is used directly as re.compile's pattern
35+ which also executes .search() in the same line
36+ """
37+
38+ unsafe_pattern = request .args ["pattern" ]
39+ re .compile (unsafe_pattern ).search ("" )
2440
2541# if __name__ == "__main__":
2642# app.run(debug=True)
Original file line number Diff line number Diff line change 1- # move outside test folder
2-
31from flask import request , Flask
42import re
53
86
97@app .route ("/direct" )
108def direct ():
11- pattern = re .escape (request .args ['pattern' ])
12- re .search (pattern , "" )
9+ """
10+ A RemoteFlowSource is escaped by re.escape and then used as
11+ re'search pattern
12+ """
13+
14+ unsafe_pattern = request .args ['pattern' ]
15+ safe_pattern = re .escape (unsafe_pattern )
16+ re .search (safe_pattern , "" )
1317
1418
1519@app .route ("/compile" )
1620def compile ():
17- pattern = re .compile (re .escape (request .args ['pattern' ]))
18- pattern .search ("" )
21+ """
22+ A RemoteFlowSource is escaped by re.escape and used as re.compile's
23+ pattern which also executes .search()
24+ """
25+
26+ unsafe_pattern = request .args ['pattern' ]
27+ safe_pattern = re .escape (unsafe_pattern )
28+ compiled_pattern = re .compile (safe_pattern )
29+ compiled_pattern .search ("" )
1930
2031
2132@app .route ("/compile_direct" )
2233def compile_direct ():
23- re .compile (re .escape (request .args ['pattern' ])).search ("" )
34+ """
35+ A RemoteFlowSource is escaped by re.escape and then used as re.compile's
36+ pattern which also executes .search() in the same line
37+ """
38+
39+ unsafe_pattern = request .args ['pattern' ]
40+ safe_pattern = re .escape (unsafe_pattern )
41+ re .compile (safe_pattern ).search ("" )
2442
2543
2644# if __name__ == "__main__":
You can’t perform that action at this time.
0 commit comments