Skip to content

Commit d5bc95d

Browse files
committed
Merge branch 'main' into generate-more-value-preserving-summaries-2
2 parents d8eafbb + 74669cb commit d5bc95d

File tree

240 files changed

+2829
-1753
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+2829
-1753
lines changed

actions/ql/lib/CHANGELOG.md

+3-1

actions/ql/src/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
[]
1+
- queries: .
2+
- apply: code-quality-selectors.yml
3+
from: codeql/suite-helpers
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include "a.h"
2+
#define FOUR 4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
int main() {
2+
return ONE + FOUR;
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#import "d.h"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
int main() {
2+
return SEVENTEEN;
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#if 1
2+
#pragma hdrstop
3+
extern int x;
4+
#define SEEN_F
5+
#endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#ifdef SEEN_F
2+
static int g() {
3+
return 20;
4+
}
5+
#endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "h1.h"
2+
#pragma hdrstop
3+
#include "h2.h"
4+
#define SEEN_H

cpp/ql/test/header-variant-tests/clang-pch/i.c renamed to cpp/ql/integration-tests/header-variant-tests/clang-pch/i.c

-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,3 @@ static int h2() {
1313
return 32;
1414
}
1515
#endif
16-
// semmle-extractor-options: --clang -include-pch ${testdir}/clang-pch.testproj/h.pch
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import os
2+
3+
4+
def test(codeql, cpp):
5+
os.mkdir("pch")
6+
extractor = cpp.get_tool("extractor")
7+
codeql.database.create(command=[
8+
f'"{extractor}" --mimic-clang -emit-pch -o pch/a.pch a.c',
9+
f'"{extractor}" --mimic-clang -include-pch pch/a.pch -Iextra_dummy_path b.c',
10+
f'"{extractor}" --mimic-clang -include pch/a -Iextra_dummy_path c.c',
11+
f'"{extractor}" --mimic-clang -emit-pch -o pch/d.pch d.c',
12+
f'"{extractor}" --mimic-clang -include-pch pch/d.pch e.c',
13+
f'"{extractor}" --mimic-clang -emit-pch -o pch/f.pch f.c',
14+
f'"{extractor}" --mimic-clang -include-pch pch/f.pch g.c',
15+
f'"{extractor}" --mimic-clang -emit-pch -o pch/h.pch h.c',
16+
f'"{extractor}" --mimic-clang -include-pch pch/h.pch i.c',
17+
])
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "a.h"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#pragma hdrstop
2+
#include "b.h"
3+
4+
int b() {
5+
return A;
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include "d.h"
2+
#include "c.h"
3+
4+
int c() {
5+
return A;
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import os
2+
3+
4+
def test(codeql, cpp):
5+
os.mkdir("pch")
6+
extractor = cpp.get_tool("extractor")
7+
codeql.database.create(command=[
8+
f'"{extractor}" --mimic-cl /Yca.h /Fppch/a.pch a.c',
9+
f'"{extractor}" --mimic-cl /Yub.h /Fppch/a.pch b.c',
10+
f'"{extractor}" --mimic-cl /Yuc.h /Fppch/a.pch c.c',
11+
])

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll

+2
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ module CppDataFlow implements InputSig<Location> {
3131
predicate viableImplInCallContext = Private::viableImplInCallContext/2;
3232

3333
predicate neverSkipInPathGraph = Private::neverSkipInPathGraph/1;
34+
35+
int defaultFieldFlowBranchLimit() { result = 3 }
3436
}

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll

+2-6
Original file line numberDiff line numberDiff line change
@@ -1652,8 +1652,6 @@ predicate validParameterAliasStep(Node node1, Node node2) {
16521652
)
16531653
}
16541654

1655-
private predicate isTopLevel(Cpp::Stmt s) { any(Function f).getBlock().getAStmt() = s }
1656-
16571655
private Cpp::Stmt getAChainedBranch(Cpp::IfStmt s) {
16581656
result = s.getThen()
16591657
or
@@ -1684,11 +1682,9 @@ private Instruction getAnInstruction(Node n) {
16841682
}
16851683

16861684
private newtype TDataFlowSecondLevelScope =
1687-
TTopLevelIfBranch(Cpp::Stmt s) {
1688-
exists(Cpp::IfStmt ifstmt | s = getAChainedBranch(ifstmt) and isTopLevel(ifstmt))
1689-
} or
1685+
TTopLevelIfBranch(Cpp::Stmt s) { s = getAChainedBranch(_) } or
16901686
TTopLevelSwitchCase(Cpp::SwitchCase s) {
1691-
exists(Cpp::SwitchStmt switchstmt | s = switchstmt.getASwitchCase() and isTopLevel(switchstmt))
1687+
exists(Cpp::SwitchStmt switchstmt | s = switchstmt.getASwitchCase())
16921688
}
16931689

16941690
/**

cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ module CastToPointerArithFlowConfig implements DataFlow::StateConfigSig {
4444
) and
4545
getFullyConvertedType(node) = state
4646
}
47+
48+
predicate isBarrierIn(DataFlow::Node node) { isSource(node, _) }
49+
50+
predicate isBarrierOut(DataFlow::Node node) { isSink(node, _) }
4751
}
4852

4953
/**

cpp/ql/src/Security/CWE/CWE-014/MemsetMayBeDeleted.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* @security-severity 7.8
99
* @precision high
1010
* @tags security
11-
* external/cwe/cwe-14
11+
* external/cwe/cwe-014
1212
*/
1313

1414
import cpp

cpp/ql/src/Security/CWE/CWE-020/CountUntrustedDataToExternalAPI.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* to it.
66
* @id cpp/count-untrusted-data-external-api
77
* @kind table
8-
* @tags security external/cwe/cwe-20
8+
* @tags security external/cwe/cwe-020
99
*/
1010

1111
import cpp

cpp/ql/src/Security/CWE/CWE-020/IRCountUntrustedDataToExternalAPI.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* to it.
66
* @id cpp/count-untrusted-data-external-api-ir
77
* @kind table
8-
* @tags security external/cwe/cwe-20
8+
* @tags security external/cwe/cwe-020
99
*/
1010

1111
import cpp

cpp/ql/src/Security/CWE/CWE-020/IRUntrustedDataToExternalAPI.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* @precision low
77
* @problem.severity error
88
* @security-severity 7.8
9-
* @tags security external/cwe/cwe-20
9+
* @tags security external/cwe/cwe-020
1010
*/
1111

1212
import cpp

cpp/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* @precision low
77
* @problem.severity error
88
* @security-severity 7.8
9-
* @tags security external/cwe/cwe-20
9+
* @tags security external/cwe/cwe-020
1010
*/
1111

1212
import cpp
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
[]
1+
- queries: .
2+
- apply: code-quality-selectors.yml
3+
from: codeql/suite-helpers

cpp/ql/src/experimental/Security/CWE/CWE-020/LateCheckOfFunctionArgument.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* @tags correctness
1111
* security
1212
* experimental
13-
* external/cwe/cwe-20
13+
* external/cwe/cwe-020
1414
*/
1515

1616
import cpp

cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88

99
import internal.CaptureModels
10+
import SummaryModels
1011

1112
from DataFlowSummaryTargetApi api, string flow
1213
where flow = ContentSensitive::captureFlow(api, _, _)

cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88

99
import internal.CaptureModels
10+
import SummaryModels
1011

1112
from DataFlowSummaryTargetApi api, string noflow
1213
where noflow = captureNeutral(api)

cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88

99
import internal.CaptureModels
10-
import Heuristic
10+
import SinkModels
1111

1212
from DataFlowSinkTargetApi api, string sink
13-
where sink = captureSink(api)
13+
where sink = Heuristic::captureSink(api)
1414
select sink order by sink

cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88

99
import internal.CaptureModels
10-
import Heuristic
10+
import SourceModels
1111

1212
from DataFlowSourceTargetApi api, string source
13-
where source = captureSource(api)
13+
where source = Heuristic::captureSource(api)
1414
select source order by source

cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88

99
import internal.CaptureModels
10+
import SummaryModels
1011

1112
from DataFlowSummaryTargetApi api, string flow
1213
where flow = captureFlow(api, _)

0 commit comments

Comments
 (0)