Skip to content

Commit de565f9

Browse files
Add test and fix a bug
1 parent b96edb9 commit de565f9

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

java/ql/lib/semmle/code/java/security/SensitiveResultReceiverQuery.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ private class SensitiveResultReceiverConf extends TaintTracking::Configuration {
4242
node.asExpr() = call.getSentData()
4343
)
4444
}
45+
46+
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
47+
super.allowImplicitRead(node, c)
48+
or
49+
this.isSink(node)
50+
}
4551
}
4652

4753
predicate sensitiveResultReceiver(

java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import android.os.Bundle;
2+
import android.os.ResultReceiver;
3+
4+
class SensitiveResultReceiver {
5+
<T> T source() { return null; }
6+
7+
void test1(String password) {
8+
ResultReceiver rec = source();
9+
Bundle b = new Bundle();
10+
b.putCharSequence("pass", password);
11+
rec.send(0, b); // $hasSensitiveResultReceiver
12+
}
13+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import java
2+
import TestUtilities.InlineExpectationsTest
3+
import semmle.code.java.security.SensitiveResultReceiverQuery
4+
5+
class TestSource extends RemoteFlowSource {
6+
TestSource() { this.asExpr().(MethodAccess).getMethod().hasName("source") }
7+
8+
override string getSourceType() { result = "test" }
9+
}
10+
11+
class ResultReceiverTest extends InlineExpectationsTest {
12+
ResultReceiverTest() { this = "ResultReceiverTest" }
13+
14+
override string getARelevantTag() { result = "hasSensitiveResultReceiver" }
15+
16+
override predicate hasActualResult(Location loc, string element, string tag, string value) {
17+
exists(DataFlow::PathNode src, DataFlow::PathNode sink, DataFlow::Node recSrc |
18+
sensitiveResultReceiver(src, sink, recSrc) and
19+
element = sink.toString() and
20+
loc = sink.getNode().getLocation() and
21+
tag = "hasSensitiveResultReceiver" and
22+
value = ""
23+
)
24+
}
25+
}

0 commit comments

Comments
 (0)