Skip to content

Commit 084046e

Browse files
committed
test-directives added
1 parent caa8064 commit 084046e

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

checkers/python/avoid-unsanitized-sql.test.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,35 @@
88
def execute_unsafe_query(query: str):
99
conn = sqlite3.connect("test.db")
1010
cursor = conn.cursor()
11-
cursor.execute(query) # ✅ Uses parameterized query
11+
cursor.execute(query) #unsafe with user input
1212
result = cursor.fetchall()
1313
conn.commit()
1414
conn.close()
1515
return result
1616

17+
def better_query(query: str, params):
18+
conn = sqlite3.connect("test.db")
19+
cursor = conn.cursor()
20+
cursor.execute(query, params) #safe to execute with user input
21+
result = cursor.fetchall()
22+
conn.commit()
23+
conn.close()
24+
return result
25+
26+
1727
@app.get("/unsafe_query/")
1828
def unsafe_query(user_input: str):
29+
#f-string case
30+
#<expect-error>
1931
query = f"SELECT * FROM users WHERE name = {user_input}"
32+
#binary operator case
33+
#<expect-error>
2034
query2= "SELECT * FROM users WHERE name ="+ user_input
35+
#should not identify this as an error
36+
query3= "SELECT * FROM user WHERE name= ?"
2137
result = execute_unsafe_query(query)
2238
result2= execute_unsafe_query(query=query2)
23-
return {"result": result, "result2": result2}
39+
40+
result3= better_query(query=query3, params=(user_input,))
41+
42+
return {"result": result, "result2": result2, "result3": result3}

0 commit comments

Comments
 (0)