github / github/codeql

Missing data flow

Open
#10,980 2 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
CodeQL
Stars
10.1k
Forks
2.1k
Avg merge
2d 15h
Merged PRs (30d)
141

Description

I use the following rule of TaintTracking to query the data flow from CONTEXT_THREAD_LOCAL to if(user), but it doesn't work.

It seems that there is no data flow from CONTEXT_THREAD_LOCAL to User user variable?

```
override predicate isSource(DataFlow::Node source) {
exists(FieldRead f | source.asExpr() = f |
not source.asExpr().getEnclosingStmt() instanceof IfStmt and
f.getField().isStatic()
)
}

override predicate isSink(DataFlow::Node sink) {
exists(IfStmt ret |
sink.asExpr() = ret.getCondition().getAChildExpr*()
)
}
```

```
@SuppressWarnings("resource")
public static User getCurrentUser() {
return CONTEXT_THREAD_LOCAL.get().user;
}

public static User getRequiredCurrentUser() {
User user = getCurrentUser();
if (user == null) {
throw new ApiException(ApiError.AUTH_SIGNIN_REQUIRED, null, "Need signin first.");
}
return user;
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.