94 ) |
94 ) |
95 |
95 |
96 elif isinstance(node._securityParent, ast.Compare): |
96 elif isinstance(node._securityParent, ast.Compare): |
97 # looks for "candidate == 'some_string'" |
97 # looks for "candidate == 'some_string'" |
98 comp = node._securityParent |
98 comp = node._securityParent |
99 if isinstance(comp.left, ast.Name): |
99 if ( |
100 if RE_CANDIDATES.search(comp.left.id): |
100 isinstance(comp.left, ast.Name) and |
101 if AstUtilities.isString(comp.comparators[0]): |
101 RE_CANDIDATES.search(comp.left.id) and |
102 reportError( |
102 AstUtilities.isString(comp.comparators[0]) |
103 context.node.lineno - 1, |
103 ): |
104 context.node.col_offset, |
104 reportError( |
105 "S105", |
105 context.node.lineno - 1, |
106 "L", |
106 context.node.col_offset, |
107 "M", |
107 "S105", |
108 comp.comparators[0].s |
108 "L", |
109 ) |
109 "M", |
|
110 comp.comparators[0].s |
|
111 ) |
110 |
112 |
111 |
113 |
112 def checkHardcodedPasswordAsFunctionArg(reportError, context, config): |
114 def checkHardcodedPasswordAsFunctionArg(reportError, context, config): |
113 """ |
115 """ |
114 Function to check for use of hard-coded password function arguments. |
116 Function to check for use of hard-coded password function arguments. |
151 len(context.node.args.defaults)) |
153 len(context.node.args.defaults)) |
152 defs.extend(context.node.args.defaults) |
154 defs.extend(context.node.args.defaults) |
153 |
155 |
154 # go through all (param, value)s and look for candidates |
156 # go through all (param, value)s and look for candidates |
155 for key, val in zip(context.node.args.args, defs): |
157 for key, val in zip(context.node.args.args, defs): |
156 if isinstance(key, (ast.Name, ast.arg)): |
158 if ( |
157 if AstUtilities.isString(val) and RE_CANDIDATES.search(key.arg): |
159 isinstance(key, (ast.Name, ast.arg)) and |
158 reportError( |
160 AstUtilities.isString(val) and RE_CANDIDATES.search(key.arg) |
159 context.node.lineno - 1, |
161 ): |
160 context.node.col_offset, |
162 reportError( |
161 "S107", |
163 context.node.lineno - 1, |
162 "L", |
164 context.node.col_offset, |
163 "M", |
165 "S107", |
164 val.s |
166 "L", |
165 ) |
167 "M", |
|
168 val.s |
|
169 ) |