Skip to content

Commit e183171

Browse files
committed
Java: model Object.clone
1 parent 6ef7288 commit e183171

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

java/ql/src/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,8 @@ private predicate qualifierToMethodStep(Expr tracked, MethodAccess sink) {
292292
* Methods that return tainted data when called on tainted data.
293293
*/
294294
private predicate taintPreservingQualifierToMethod(Method m) {
295+
m instanceof CloneMethod
296+
or
295297
m.getDeclaringType() instanceof TypeString and
296298
(
297299
m.getName() = "concat" or

java/ql/test/library-tests/dataflow/local-additional-taint/Test.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import org.apache.commons.codec.BinaryDecoder;
55
import org.apache.commons.codec.StringEncoder;
66
import org.apache.commons.codec.StringDecoder;
7-
8-
7+
import java.util.Date;
98

109
class Test {
1110
public static void taintSteps(
11+
Date date,
1212
Decoder decoder,
1313
Encoder encoder,
1414
StringEncoder stringEncoder,
@@ -29,5 +29,7 @@ public static void taintSteps(
2929

3030
bytes1 = binEncoder.encode(bytes2);
3131
bytes1 = binDecoder.decode(bytes2);
32+
33+
Object clone = date.clone();
3234
}
3335
}

java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@
4141
| Test.java:28:34:28:40 | string2 | Test.java:28:13:28:41 | encode(...) |
4242
| Test.java:30:30:30:35 | bytes2 | Test.java:30:12:30:36 | encode(...) |
4343
| Test.java:31:30:31:35 | bytes2 | Test.java:31:12:31:36 | decode(...) |
44+
| Test.java:33:18:33:21 | date | Test.java:33:18:33:29 | clone(...) |

0 commit comments

Comments
 (0)