Skip to content

Commit 0e3f4f6

Browse files
authored
Merge pull request github#12305 from pwntester/new_java_net_URL_toURI_taintstep
Java: Add new java.net.URI taintsteps
2 parents 85bf10e + c027e10 commit 0e3f4f6

File tree

4 files changed

+104
-1
lines changed

4 files changed

+104
-1
lines changed

java/ql/lib/ext/java.net.model.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ extensions:
2323
data:
2424
- ["java.net", "URI", False, "URI", "(String)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
2525
- ["java.net", "URI", False, "create", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
26-
- ["java.net", "URI", False, "toAsciiString", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
26+
- ["java.net", "URI", False, "toASCIIString", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
2727
- ["java.net", "URI", False, "toString", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
2828
- ["java.net", "URI", False, "toURL", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
2929
- ["java.net", "URL", False, "URL", "(String)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
30+
- ["java.net", "URL", False, "toURI", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
31+
- ["java.net", "URL", False, "toExternalForm", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
3032
- ["java.net", "URLDecoder", False, "decode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package generatedtest;
2+
3+
import java.net.URI;
4+
import java.net.URL;
5+
import java.net.URLDecoder;
6+
import java.nio.charset.Charset;
7+
8+
// Test case generated by GenerateFlowTestCase.ql
9+
public class Test {
10+
11+
Object source() {
12+
return null;
13+
}
14+
15+
void sink(Object o) {}
16+
17+
public void test() throws Exception {
18+
19+
{
20+
// "java.net;URI;false;URI;(String);;Argument[0];Argument[-1];taint;manual"
21+
URI out = null;
22+
String in = (String) source();
23+
out = new URI(in);
24+
sink(out); // $ hasTaintFlow
25+
}
26+
{
27+
// "java.net;URI;false;create;;;Argument[0];ReturnValue;taint;manual"
28+
URI out = null;
29+
String in = (String) source();
30+
out = URI.create(in);
31+
sink(out); // $ hasTaintFlow
32+
}
33+
{
34+
// "java.net;URI;false;toASCIIString;;;Argument[-1];ReturnValue;taint;manual"
35+
String out = null;
36+
URI in = (URI) source();
37+
out = in.toASCIIString();
38+
sink(out); // $ hasTaintFlow
39+
}
40+
{
41+
// "java.net;URI;false;toString;;;Argument[-1];ReturnValue;taint;manual"
42+
String out = null;
43+
URI in = (URI) source();
44+
out = in.toString();
45+
sink(out); // $ hasTaintFlow
46+
}
47+
{
48+
// "java.net;URI;false;toURL;;;Argument[-1];ReturnValue;taint;manual"
49+
URL out = null;
50+
URI in = (URI) source();
51+
out = in.toURL();
52+
sink(out); // $ hasTaintFlow
53+
}
54+
{
55+
// "java.net;URL;false;URL;(String);;Argument[0];Argument[-1];taint;manual"
56+
URL out = null;
57+
String in = (String) source();
58+
out = new URL(in);
59+
sink(out); // $ hasTaintFlow
60+
}
61+
{
62+
// "java.net;URL;false;toExternalForm;;;Argument[-1];ReturnValue;taint;manual"
63+
String out = null;
64+
URL in = (URL) source();
65+
out = in.toExternalForm();
66+
sink(out); // $ hasTaintFlow
67+
}
68+
{
69+
// "java.net;URL;false;toURI;;;Argument[-1];ReturnValue;taint;manual"
70+
URI out = null;
71+
URL in = (URL) source();
72+
out = in.toURI();
73+
sink(out); // $ hasTaintFlow
74+
}
75+
{
76+
// "java.net;URLDecoder;false;decode;;;Argument[0];ReturnValue;taint;manual"
77+
String out = null;
78+
String in = (String) source();
79+
out = URLDecoder.decode(in);
80+
sink(out); // $ hasTaintFlow
81+
}
82+
{
83+
// "java.net;URLDecoder;false;decode;;;Argument[0];ReturnValue;taint;manual"
84+
String out = null;
85+
String in = (String) source();
86+
out = URLDecoder.decode(in, (Charset) null);
87+
sink(out); // $ hasTaintFlow
88+
}
89+
{
90+
// "java.net;URLDecoder;false;decode;;;Argument[0];ReturnValue;taint;manual"
91+
String out = null;
92+
String in = (String) source();
93+
out = URLDecoder.decode(in, (String) null);
94+
sink(out); // $ hasTaintFlow
95+
}
96+
97+
}
98+
99+
}

java/ql/test/library-tests/frameworks/jdk/java.net/test.expected

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import java
2+
import TestUtilities.InlineFlowTest

0 commit comments

Comments
 (0)