Mon, 21 Oct 2024 19:31:11 +0200
Code Style Checker
- Updated the security checkers to `bandit` v1.7.10.
9325 | 1 | # -*- coding: utf-8 -*- |
2 | ||
10439
21c28b0f9e41
Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
3 | # Copyright (c) 2022 - 2024 Detlev Offenbach <detlev@die-offenbachs.de> |
9325 | 4 | # |
5 | ||
6 | """ | |
10996
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
7 | Module implementing checks for using 'requests' or 'httpx' calls without timeout. |
9325 | 8 | """ |
9 | ||
10 | # | |
11 | # This is a modified version of the one found in the bandit package. | |
12 | # | |
13 | # SPDX-License-Identifier: Apache-2.0 | |
14 | # | |
15 | ||
16 | ||
17 | def getChecks(): | |
18 | """ | |
19 | Public method to get a dictionary with checks handled by this module. | |
20 | ||
21 | @return dictionary containing checker lists containing checker function and | |
22 | list of codes | |
23 | @rtype dict | |
24 | """ | |
25 | return { | |
26 | "Call": [ | |
27 | (checkRequestWithouTimeout, ("S114",)), | |
28 | ], | |
29 | } | |
30 | ||
31 | ||
10683
779cda568acb
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10507
diff
changeset
|
32 | def checkRequestWithouTimeout(reportError, context, _config): |
9325 | 33 | """ |
34 | Function to check for use of requests without timeout. | |
35 | ||
36 | @param reportError function to be used to report errors | |
37 | @type func | |
38 | @param context security context object | |
39 | @type SecurityContext | |
10683
779cda568acb
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10507
diff
changeset
|
40 | @param _config dictionary with configuration data (unused) |
9325 | 41 | @type dict |
42 | """ | |
10996
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
43 | httpVerbs = {"get", "options", "head", "post", "put", "patch", "delete"} |
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
44 | httpxAttrs = {"request", "stream", "Client", "AsyncClient"} | httpVerbs |
10507
d1c6608155ef
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
45 | qualName = context.callFunctionNameQual.split(".")[0] |
10996
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
46 | if (qualName == "requests" and context.callFunctionName in httpVerbs) or ( |
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
47 | qualName == "httpx" and context.callFunctionName in httpxAttrs |
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
48 | ): |
9325 | 49 | # check for missing timeout |
50 | if context.checkCallArgValue("timeout") is None: | |
51 | reportError( | |
52 | context.node.lineno - 1, | |
53 | context.node.col_offset, | |
54 | "S114.1", | |
55 | "M", | |
56 | "L", | |
10996
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
57 | qualName, |
9325 | 58 | ) |
59 | ||
60 | # check for timeout=None | |
61 | if context.checkCallArgValue("timeout", "None"): | |
62 | reportError( | |
63 | context.node.lineno - 1, | |
64 | context.node.col_offset, | |
65 | "S114.2", | |
66 | "M", | |
67 | "L", | |
10996
a3dc181d14e1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10683
diff
changeset
|
68 | qualName, |
9325 | 69 | ) |