Skip to content

Commit 8d85e9f

Browse files
Test fixes + more tests
1 parent 7d9a0bf commit 8d85e9f

File tree

3 files changed

+60
-13
lines changed

3 files changed

+60
-13
lines changed

java/ql/lib/ext/org.springframework.web.socket.model.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ extensions:
1111
- ["org.springframework.web.socket.handler", "AbstractWebSocketHandler", True, "handleBinaryMessage", "", "", "Parameter[0]", "remote", "manual"]
1212
- ["org.springframework.web.socket.handler", "AbstractWebSocketHandler", True, "handleBinaryMessage", "", "", "Parameter[1]", "remote", "manual"]
1313
- ["org.springframework.web.socket.handler", "AbstractWebSocketHandler", True, "handleTextMessage", "", "", "Parameter[0]", "remote", "manual"]
14-
- ["org.springframework.web.socket.handler", "AbstractWebSocketHandler", True, "handleTextMessage", "", "", "Parameter[0]", "remote", "manual"]
14+
- ["org.springframework.web.socket.handler", "AbstractWebSocketHandler", True, "handleTextMessage", "", "", "Parameter[1]", "remote", "manual"]
1515
- addsTo:
1616
pack: codeql/java-all
1717
extensible: summaryModel

java/ql/test/library-tests/frameworks/spring/websocket/Test.java

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,56 @@
22
import org.springframework.web.socket.handler.TextWebSocketHandler;
33
import org.springframework.web.socket.WebSocketSession;
44
import org.springframework.web.socket.WebSocketMessage;
5+
import org.springframework.web.socket.TextMessage;
6+
import org.springframework.web.socket.BinaryMessage;
7+
import org.springframework.web.socket.CloseStatus;
58

69

7-
public class Test extends TextWebSocketHandler {
10+
public class Test {
811
void sink(Object o) {}
912

10-
@Override
11-
public void handleMessage(WebSocketSession s, WebSocketMessage<?> m) {
12-
sink(s); // $hasTaintFlow
13-
sink(s.getAcceptedProtocol()); // $hasTaintFlow
14-
sink(s.getHandshakeHeaders()); // $hasTaintFlow
15-
sink(s.getPrincipal()); // $hasTaintFlow
16-
sink(s.getUri()); // $hasTaintFlow
13+
public class A extends TextWebSocketHandler {
14+
@Override
15+
public void handleMessage(WebSocketSession s, WebSocketMessage<?> m) {
16+
sink(s); // $hasTaintFlow
17+
sink(s.getAcceptedProtocol()); // $hasTaintFlow
18+
sink(s.getHandshakeHeaders()); // $hasTaintFlow
19+
sink(s.getPrincipal()); // $hasTaintFlow
20+
sink(s.getUri()); // $hasTaintFlow
1721

18-
sink(m); // $hasTaintFlow
19-
sink(m.getPayload()); // $hasTaintFlow
22+
sink(m); // $hasTaintFlow
23+
sink(m.getPayload()); // $hasTaintFlow
24+
25+
}
26+
27+
@Override
28+
protected void handleTextMessage(WebSocketSession s, TextMessage m) {
29+
sink(s); // $hasTaintFlow
30+
sink(m); // $hasTaintFlow
31+
sink(m.asBytes()); // $hasTaintFlow
32+
}
33+
34+
@Override
35+
protected void handleBinaryMessage(WebSocketSession s, BinaryMessage m) {
36+
sink(s); // $hasTaintFlow
37+
sink(m); // $hasTaintFlow
38+
}
39+
40+
@Override
41+
public void afterConnectionEstablished(WebSocketSession s) {
42+
sink(s); // $hasTaintFlow
43+
}
44+
45+
@Override
46+
public void afterConnectionClosed(WebSocketSession s, CloseStatus c) {
47+
sink(s); // $ hasTaintFlow
48+
}
49+
50+
@Override
51+
public void handleTransportError(WebSocketSession s, Throwable exc) {
52+
sink(s); // $ hasTaintFlow
53+
}
2054

2155
}
56+
2257
}
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11
import java
2+
import semmle.code.java.dataflow.DataFlow
3+
import semmle.code.java.dataflow.FlowSources
24
import utils.test.InlineFlowTest
3-
import DefaultFlowTest
4-
import TaintFlow::PathGraph
5+
6+
module Config implements DataFlow::ConfigSig {
7+
predicate isSource(DataFlow::Node node) {
8+
DefaultFlowConfig::isSource(node)
9+
or
10+
node instanceof ActiveThreatModelSource
11+
}
12+
13+
predicate isSink = DefaultFlowConfig::isSink/1;
14+
}
15+
16+
import FlowTest<DefaultFlowConfig, Config>

0 commit comments

Comments
 (0)