Skip to content

Commit e26a7fc

Browse files
authored
Merge pull request #10173 from zbazztian/spring-crudrepository
Java: Add data flow model for Spring's CrudRepository.save() method
2 parents d6ee54e + 130e189 commit e26a7fc

File tree

8 files changed

+45
-0
lines changed

8 files changed

+45
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Added flow summary for `org.springframework.data.repository.CrudRepository.save()`.

java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ private module Frameworks {
120120
private import semmle.code.java.frameworks.ratpack.RatpackExec
121121
private import semmle.code.java.frameworks.spring.SpringCache
122122
private import semmle.code.java.frameworks.spring.SpringContext
123+
private import semmle.code.java.frameworks.spring.SpringData
123124
private import semmle.code.java.frameworks.spring.SpringHttp
124125
private import semmle.code.java.frameworks.spring.SpringUtil
125126
private import semmle.code.java.frameworks.spring.SpringUi

java/ql/lib/semmle/code/java/frameworks/spring/Spring.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import semmle.code.java.frameworks.spring.SpringContext
1313
import semmle.code.java.frameworks.spring.SpringComponentScan
1414
import semmle.code.java.frameworks.spring.SpringConstructorArg
1515
import semmle.code.java.frameworks.spring.SpringController
16+
import semmle.code.java.frameworks.spring.SpringData
1617
import semmle.code.java.frameworks.spring.SpringDescription
1718
import semmle.code.java.frameworks.spring.SpringEntry
1819
import semmle.code.java.frameworks.spring.SpringFlex
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* Provides classes and predicates for working with Spring classes and interfaces from
3+
* `org.springframework.data`.
4+
*/
5+
6+
import java
7+
private import semmle.code.java.dataflow.ExternalFlow
8+
9+
/**
10+
* Provides models for the `org.springframework.data` package.
11+
*/
12+
private class FlowSummaries extends SummaryModelCsv {
13+
override predicate row(string row) {
14+
row =
15+
"org.springframework.data.repository;CrudRepository;true;save;;;Argument[0];ReturnValue;value;manual"
16+
}
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import org.springframework.data.repository.CrudRepository;
2+
3+
class Struct {
4+
public String field;
5+
public Struct(String f){
6+
this.field = f;
7+
}
8+
}
9+
10+
public class Test {
11+
String source() { return null; }
12+
void sink(Object o) {}
13+
14+
void testCrudRepository(CrudRepository<Struct, Integer> cr) {
15+
Struct s = new Struct(source());
16+
s = cr.save(s);
17+
sink(s.field); //$hasValueFlow
18+
}
19+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/spring-data-commons-2.5.1

java/ql/test/library-tests/frameworks/spring/data/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)