mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
add java.util.regex models and tests
This commit is contained in:
@@ -99,6 +99,7 @@ private module Frameworks {
|
||||
private import semmle.code.java.frameworks.Logging
|
||||
private import semmle.code.java.frameworks.Objects
|
||||
private import semmle.code.java.frameworks.Optional
|
||||
private import semmle.code.java.frameworks.Regex
|
||||
private import semmle.code.java.frameworks.Stream
|
||||
private import semmle.code.java.frameworks.Strings
|
||||
private import semmle.code.java.frameworks.ratpack.Ratpack
|
||||
|
||||
20
java/ql/lib/semmle/code/java/frameworks/Regex.qll
Normal file
20
java/ql/lib/semmle/code/java/frameworks/Regex.qll
Normal file
@@ -0,0 +1,20 @@
|
||||
/** Definitions related to `java.util.regex`. */
|
||||
|
||||
import semmle.code.java.dataflow.ExternalFlow
|
||||
|
||||
private class RegexModel extends SummaryModelCsv {
|
||||
override predicate row(string s) {
|
||||
s =
|
||||
[
|
||||
//`namespace; type; subtypes; name; signature; ext; input; output; kind`
|
||||
"java.util.regex;Matcher;false;group;;;Argument[-1];ReturnValue;taint",
|
||||
"java.util.regex;Matcher;false;replaceAll;;;Argument[-1];ReturnValue;taint",
|
||||
"java.util.regex;Matcher;false;replaceAll;;;Argument[0];ReturnValue;taint",
|
||||
"java.util.regex;Matcher;false;replaceFirst;;;Argument[-1];ReturnValue;taint",
|
||||
"java.util.regex;Matcher;false;replaceFirst;;;Argument[0];ReturnValue;taint",
|
||||
"java.util.regex;Pattern;false;matcher;;;Argument[0];ReturnValue;taint",
|
||||
"java.util.regex;Pattern;false;quote;;;Argument[0];ReturnValue;taint",
|
||||
"java.util.regex;Pattern;false;split;;;Argument[0];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
99
java/ql/test/library-tests/regex/Test.java
Normal file
99
java/ql/test/library-tests/regex/Test.java
Normal file
@@ -0,0 +1,99 @@
|
||||
package generatedtest;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
// Test case generated by GenerateFlowTestCase.ql
|
||||
public class Test {
|
||||
|
||||
Object source() { return null; }
|
||||
void sink(Object o) { }
|
||||
|
||||
public void test() throws Exception {
|
||||
|
||||
{
|
||||
// "java.util.regex;Matcher;false;group;;;Argument[-1];ReturnValue;taint"
|
||||
String out = null;
|
||||
Matcher in = (Matcher)source();
|
||||
out = in.group((String)null);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;group;;;Argument[-1];ReturnValue;taint"
|
||||
String out = null;
|
||||
Matcher in = (Matcher)source();
|
||||
out = in.group();
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;group;;;Argument[-1];ReturnValue;taint"
|
||||
String out = null;
|
||||
Matcher in = (Matcher)source();
|
||||
out = in.group(0);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;replaceAll;;;Argument[-1];ReturnValue;taint"
|
||||
String out = null;
|
||||
Matcher in = (Matcher)source();
|
||||
out = in.replaceAll(null);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;replaceAll;;;Argument[0];ReturnValue;taint"
|
||||
String out = null;
|
||||
String in = (String)source();
|
||||
Matcher instance = null;
|
||||
out = instance.replaceAll(in);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;replaceFirst;;;Argument[-1];ReturnValue;taint"
|
||||
String out = null;
|
||||
Matcher in = (Matcher)source();
|
||||
out = in.replaceFirst(null);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Matcher;false;replaceFirst;;;Argument[0];ReturnValue;taint"
|
||||
String out = null;
|
||||
String in = (String)source();
|
||||
Matcher instance = null;
|
||||
out = instance.replaceFirst(in);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Pattern;false;matcher;;;Argument[0];ReturnValue;taint"
|
||||
Matcher out = null;
|
||||
CharSequence in = (CharSequence)source();
|
||||
Pattern instance = null;
|
||||
out = instance.matcher(in);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Pattern;false;quote;;;Argument[0];ReturnValue;taint"
|
||||
String out = null;
|
||||
String in = (String)source();
|
||||
out = Pattern.quote(in);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Pattern;false;split;;;Argument[0];ReturnValue;taint"
|
||||
String[] out = null;
|
||||
CharSequence in = (CharSequence)source();
|
||||
Pattern instance = null;
|
||||
out = instance.split(in);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
{
|
||||
// "java.util.regex;Pattern;false;split;;;Argument[0];ReturnValue;taint"
|
||||
String[] out = null;
|
||||
CharSequence in = (CharSequence)source();
|
||||
Pattern instance = null;
|
||||
out = instance.split(in, 0);
|
||||
sink(out); // $ hasTaintFlow
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
0
java/ql/test/library-tests/regex/test.expected
Normal file
0
java/ql/test/library-tests/regex/test.expected
Normal file
2
java/ql/test/library-tests/regex/test.ql
Normal file
2
java/ql/test/library-tests/regex/test.ql
Normal file
@@ -0,0 +1,2 @@
|
||||
import java
|
||||
import TestUtilities.InlineFlowTest
|
||||
Reference in New Issue
Block a user