Skip to content

Commit 6b168de

Browse files
committed
Python: re, handle \Z
1 parent f1efdee commit 6b168de

File tree

4 files changed

+6
-9
lines changed

4 files changed

+6
-9
lines changed

python/ql/src/semmle/python/regex.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,8 @@ abstract class RegexString extends Expr {
624624
exists(int y | this.lastPart(start, y) |
625625
this.emptyMatchAtEndGroup(end, y) or
626626
this.qualifiedItem(end, y, true) or
627-
this.specialCharacter(end, y, "$")
627+
this.specialCharacter(end, y, "$") or
628+
y = end+2 and this.escapingChar(end) and this.getChar(end+1) = "Z"
628629
)
629630
or
630631
exists(int x |
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
| test.py:44:12:44:18 | Str | This regular expression includes duplicate character 'A' in a set of characters. |
2-
| test.py:45:12:45:19 | Str | This regular expression includes duplicate character '0' in a set of characters. |
3-
| test.py:46:12:46:21 | Str | This regular expression includes duplicate character '-' in a set of characters. |
1+
| test.py:45:12:45:18 | Str | This regular expression includes duplicate character 'A' in a set of characters. |
2+
| test.py:46:12:46:19 | Str | This regular expression includes duplicate character '0' in a set of characters. |
3+
| test.py:47:12:47:21 | Str | This regular expression includes duplicate character '-' in a set of characters. |
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
| test.py:4:12:4:19 | Str | This regular expression includes an unmatchable caret at offset 1. |
22
| test.py:5:12:5:23 | Str | This regular expression includes an unmatchable caret at offset 5. |
33
| test.py:6:12:6:21 | Str | This regular expression includes an unmatchable caret at offset 2. |
4-
| test.py:77:12:77:27 | Str | This regular expression includes an unmatchable caret at offset 8. |
4+
| test.py:78:12:78:27 | Str | This regular expression includes an unmatchable caret at offset 8. |
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
| test.py:29:12:29:19 | Str | This regular expression includes an unmatchable dollar at offset 3. |
22
| test.py:30:12:30:23 | Str | This regular expression includes an unmatchable dollar at offset 3. |
33
| test.py:31:12:31:20 | Str | This regular expression includes an unmatchable dollar at offset 2. |
4-
| test.py:41:10:41:27 | Str | This regular expression includes an unmatchable dollar at offset 5. |
5-
| test.py:41:10:41:27 | Str | This regular expression includes an unmatchable dollar at offset 11. |
6-
| test.py:41:10:41:27 | Str | This regular expression includes an unmatchable dollar at offset 13. |
7-
| test.py:42:10:42:25 | Str | This regular expression includes an unmatchable dollar at offset 3. |
84
| test.py:79:12:79:26 | Str | This regular expression includes an unmatchable dollar at offset 3. |

0 commit comments

Comments
 (0)