Skip to content

Commit 153f8fe

Browse files
committed
QL: fix the signature of regexpCapture and regexpFind
1 parent f29457f commit 153f8fe

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

ql/src/codeql_ql/ast/internal/Builtins.qll

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ predicate isBuiltinMember(string sig) {
3535
"string int.toString()", "string string.charAt(int)", "int string.indexOf(string)",
3636
"int string.indexOf(string, int, int)", "predicate string.isLowercase()",
3737
"predicate string.isUppercase()", "int string.length()", "predicate string.matches(string)",
38-
"string string.prefix(int)", "string regexpCapture(string, int)",
39-
"string regexpFind(string, int, int)", "predicate string.regexpMatch(string)",
38+
"string string.prefix(int)", "string string.regexpCapture(string, int)",
39+
"string string.regexpFind(string, int, int)", "predicate string.regexpMatch(string)",
4040
"string string.regexpReplaceAll(string, string)", "string string.replaceAll(string, string)",
4141
"string string.splitAt(string)", "string string.splitAt(string, int)",
4242
"string string.substring(int, int)", "string string.suffix(int)", "date string.toDate()",
@@ -58,6 +58,18 @@ predicate isBuiltinMember(string qual, string ret, string name, string args) {
5858
)
5959
}
6060

61+
module BuildinsConsistency {
62+
predicate noBuildinParse(string sig) {
63+
isBuiltinMember(sig) and
64+
not exists(sig.regexpCapture("(\\w+) (\\w+)\\.(\\w+)\\(([\\w, ]*)\\)", _))
65+
}
66+
67+
predicate noBuildinClasslessParse(string sig) {
68+
isBuiltinClassless(sig) and
69+
not exists(sig.regexpCapture("(\\w+) (\\w+)\\(([\\w, ]*)\\)", _))
70+
}
71+
}
72+
6173
bindingset[args]
6274
string getArgType(string args, int i) { result = args.splitAt(",", i).trim() }
6375

0 commit comments

Comments
 (0)