Skip to content

Commit a70ed71

Browse files
authored
Merge pull request #8370 from hvitved/ruby/regex-group-name-off-by-one
Ruby: Fix off-by-one error in `getGroupName`
2 parents 8612116 + 5f48cc0 commit a70ed71

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

ruby/ql/lib/codeql/ruby/security/performance/ParseRegExp.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ abstract class RegExp extends AST::StringlikeLiteral {
488488
this.group(start, end) and
489489
exists(int nameEnd |
490490
this.namedGroupStart(start, nameEnd) and
491-
result = this.getText().substring(start + 4, nameEnd - 1)
491+
result = this.getText().substring(start + 3, nameEnd - 1)
492492
)
493493
}
494494

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
groupName
2+
| regexp.rb:52:2:52:11 | (?<id>\\w+) | id |
3+
| regexp.rb:53:2:53:12 | (?'foo'fo+) | foo |
4+
| regexp.rb:57:2:57:11 | (?<qux>q+) | qux |
5+
groupNumber
6+
| regexp.rb:46:2:46:6 | (foo) | 1 |
7+
| regexp.rb:47:4:47:8 | (o\|b) | 1 |
8+
| regexp.rb:48:2:48:9 | (a\|b\|cd) | 1 |
9+
| regexp.rb:49:2:49:7 | (?::+) | 1 |
10+
| regexp.rb:52:2:52:11 | (?<id>\\w+) | 1 |
11+
| regexp.rb:53:2:53:12 | (?'foo'fo+) | 1 |
12+
| regexp.rb:56:2:56:5 | (a+) | 1 |
13+
| regexp.rb:57:2:57:11 | (?<qux>q+) | 1 |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import codeql.ruby.security.performance.RegExpTreeView
2+
3+
query predicate groupName(RegExpGroup g, string name) { name = g.getName() }
4+
5+
query predicate groupNumber(RegExpGroup g, int number) { number = g.getNumber() }

0 commit comments

Comments
 (0)