Commit Graph

9348 Commits

Author SHA1 Message Date
Geoffrey White
cc841a68f6 Merge pull request #11921 from gsingh93/range-node
C++: Add RangeNode class
2023-03-31 13:22:19 +01:00
Robert Marsh
d03dd49904 Merge pull request #12622 from MathiasVP/skip-safe-conversions-in-range-analysis
C++: Range analysis on `EquivalenceClass`es
2023-03-30 10:08:59 -04:00
Jeroen Ketema
9173e08805 Merge pull request #12714 from jketema/rem-cleanup
C++: Match `SemZeroBound` handling of mul case in rem case
2023-03-30 14:25:20 +02:00
Mathias Vorreiter Pedersen
4043aa976d Merge branch 'main' into skip-safe-conversions-in-range-analysis 2023-03-30 11:24:27 +01:00
Mathias Vorreiter Pedersen
d9b2a72232 C++: Ensure that equiv instructions are in the same block. 2023-03-30 11:22:24 +01:00
Mathias Vorreiter Pedersen
4602a8ae4a C++: Simplify 'converts'. 2023-03-30 11:16:54 +01:00
Mathias Vorreiter Pedersen
62bc8074ba Merge pull request #12626 from gsingh93/buffer-access-size-expr
C++: Add getSizeExpr and getSizeMult predicates to BufferAccess
2023-03-30 10:49:12 +01:00
Mathias Vorreiter Pedersen
0202bafc35 Merge pull request #12709 from MathiasVP/disable-rounding-2
C++: Disable floating point rounding in range analysis
2023-03-30 10:05:47 +01:00
Mathias Vorreiter Pedersen
64a08cefd7 C++: Add change note. 2023-03-30 09:37:27 +01:00
Mathias Vorreiter Pedersen
6275a015a4 Merge pull request #12708 from MathiasVP/dont-break-ir-cfg-on-vla
C++: Don't produce partial CFGs when using VLAs
2023-03-30 09:16:10 +01:00
Jeroen Ketema
ade02d80cf C++: Match SemZeroBound handling of mul case in rem case 2023-03-30 09:10:55 +02:00
Gulshan Singh
abec99badb C++: Add getSizeExpr and getSizeMult predicates to BufferAccess 2023-03-29 08:26:00 -07:00
Mathias Vorreiter Pedersen
65c7a504b2 C++: Accept test changes. 2023-03-29 15:08:50 +01:00
Mathias Vorreiter Pedersen
27d8f98418 C++: Replace 'int' with 'float' in tests and accept test changes. 2023-03-29 14:27:37 +01:00
Mathias Vorreiter Pedersen
a2c0e36062 C++: Accept test changes. 2023-03-29 14:25:05 +01:00
Mathias Vorreiter Pedersen
4d8159c581 C++: Disable rounding. 2023-03-29 14:23:05 +01:00
Mathias Vorreiter Pedersen
6dd45b31e1 Merge pull request #12696 from MathiasVP/range-analysis-of-mul-expr
C++: IR-based range analysis of multiplication
2023-03-29 14:05:55 +01:00
Mathias Vorreiter Pedersen
3bd193f721 C++: Fix Code Scanning errors. 2023-03-29 14:02:34 +01:00
Mathias Vorreiter Pedersen
0e9ed989e0 C++: Accept test changes. 2023-03-29 14:01:01 +01:00
Mathias Vorreiter Pedersen
fb6e45b6f4 C++: Emit a NoOp during CFG construction for VLAs. 2023-03-29 13:58:39 +01:00
Mathias Vorreiter Pedersen
d4746e0508 C++: Add test with VLA. 2023-03-29 13:58:24 +01:00
Mathias Vorreiter Pedersen
9d5c785d89 C++: Even more fix'ing QLDoc. 2023-03-29 12:45:27 +01:00
Mathias Vorreiter Pedersen
09d0385f0f C++: Fix QLDoc. 2023-03-29 12:42:32 +01:00
Mathias Vorreiter Pedersen
c14bccf7eb C++: Fix QLDoc. 2023-03-29 12:41:04 +01:00
Mathias Vorreiter Pedersen
fe487a1ae8 C++: Respond to PR reviews. 2023-03-29 12:30:24 +01:00
Jeroen Ketema
0acca2ba76 Merge pull request #12687 from jketema/unit-2
Make imports of `codeql.util.Unit` private
2023-03-29 13:07:12 +02:00
Mathias Vorreiter Pedersen
8021958ac5 C++: Accept test changes. 2023-03-28 16:50:18 +01:00
Mathias Vorreiter Pedersen
6699a0cb1a C++: Add range analysis for binary multiplication. 2023-03-28 16:50:18 +01:00
Anders Schack-Mulligen
7c74fd07e9 Merge pull request #12684 from aschackmull/dataflow/remove-footgun
Dataflow: Remove accidentally exposed predicates.
2023-03-28 15:14:58 +02:00
Jeroen Ketema
3b8ad087eb Make imports of codeql.util.Unit private 2023-03-28 14:14:13 +02:00
Anders Schack-Mulligen
47e7aa9566 Dataflow: Add change note. 2023-03-28 13:17:48 +02:00
Mathias Vorreiter Pedersen
4b2758f1b5 Merge branch 'main' into skip-safe-conversions-in-range-analysis 2023-03-28 10:32:13 +01:00
Anders Schack-Mulligen
d406b051fc Dataflow: Remove accidentally exposed predicates. 2023-03-28 10:04:21 +02:00
Jeroen Ketema
12da4f7814 C++: Address review comment 2023-03-28 00:33:46 +02:00
Jeroen Ketema
9303055013 C++: Address review comment 2023-03-28 00:33:46 +02:00
Jeroen Ketema
99c6111b05 C++: Add support for bounded modulus operations 2023-03-28 00:33:43 +02:00
Mathias Vorreiter Pedersen
724d97eabb C++: Make sign analysis aware of unsigned'ness and accept test changes. 2023-03-27 23:08:12 +01:00
Mathias Vorreiter Pedersen
cbd4662696 Merge branch 'main' into skip-safe-conversions-in-range-analysis 2023-03-27 21:18:49 +01:00
Robert Marsh
62d2f23904 Merge pull request #12673 from MathiasVP/range-analysis-of-add-expr
C++: IR-based range analysis of addition
2023-03-27 15:31:11 -04:00
Jeroen Ketema
213c4b0818 C++: Fix join-order problem in cpp/overrun-write
Before on Wireshark:
```
[2023-03-27 12:59:25] Evaluated non-recursive predicate OverrunWriteProductFlow#fb5ce006::isSinkPairImpl#5#fffff@2ba90584 in 99742ms (size: 52640).
Evaluated relational algebra for predicate OverrunWriteProductFlow#fb5ce006::isSinkPairImpl#5#fffff@2ba90584 with tuple counts:
        1047588019  ~1%    {3} r1 = JOIN DataFlowUtil#47741e1f::InstructionNode#fff_20#join_rhs WITH OverrunWriteProductFlow#fb5ce006::bounded#3#fff_102#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Rhs.2
          67558965  ~0%    {4} r2 = JOIN r1 WITH Instruction#577b6a83::CallInstruction::getArgument#fbf_201#join_rhs ON FIRST 1 OUTPUT Rhs.2, Lhs.1, Lhs.2, Rhs.1
         613572640  ~0%    {5} r3 = JOIN r2 WITH ArrayFunction#ca0b6b68::ArrayFunction::hasArrayWithVariableSize#2#dispred#fff_201#join_rhs ON FIRST 1 OUTPUT Lhs.3, Rhs.1, Lhs.1, Lhs.2, Rhs.2
             52640  ~0%    {4} r4 = JOIN r3 WITH Instruction#577b6a83::CallInstruction::getStaticCallTarget#0#dispred#ff ON FIRST 2 OUTPUT Lhs.0, Lhs.4, Lhs.2, Lhs.3
             52640  ~0%    {4} r5 = JOIN r4 WITH Instruction#577b6a83::CallInstruction::getArgument#fbf ON FIRST 2 OUTPUT Rhs.2, Lhs.2, Lhs.3, Lhs.0
             52640  ~0%    {5} r6 = JOIN r5 WITH DataFlowUtil#47741e1f::InstructionNode#fff_20#join_rhs ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Lhs.3, Rhs.1
             52640  ~0%    {5} r7 = JOIN r6 WITH Instruction#577b6a83::Instruction::getUnconvertedResultExpression#0#dispred#ff ON FIRST 1 OUTPUT Lhs.3, Lhs.4, Lhs.1, Lhs.2, Rhs.1
                           return r7
```

After:
```
[2023-03-27 13:56:36] Evaluated non-recursive predicate OverrunWriteProductFlow#fb5ce006::isSinkPairImpl#5#fffff@f936aapd in 777ms (size: 52640).
Evaluated relational algebra for predicate OverrunWriteProductFlow#fb5ce006::isSinkPairImpl#5#fffff@f936aapd with tuple counts:
        565480  ~5%    {2} r1 = SCAN Instruction#577b6a83::CallInstruction::getStaticCallTarget#0#dispred#ff OUTPUT In.1, In.0
          4420  ~1%    {3} r2 = JOIN r1 WITH ArrayFunction#ca0b6b68::ArrayFunction::hasArrayWithVariableSize#2#dispred#fff ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Rhs.2
          4420  ~0%    {3} r3 = JOIN r2 WITH Instruction#577b6a83::CallInstruction::getArgument#fff ON FIRST 2 OUTPUT Rhs.2, Lhs.2, Lhs.0
          4420  ~0%    {4} r4 = JOIN r3 WITH DataFlowUtil#47741e1f::InstructionNode#fff_20#join_rhs ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Lhs.2, Rhs.1
          4420  ~0%    {4} r5 = JOIN r4 WITH Instruction#577b6a83::Instruction::getUnconvertedResultExpression#0#dispred#ff ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.3, Rhs.1
          4420  ~3%    {4} r6 = JOIN r5 WITH Instruction#577b6a83::CallInstruction::getArgument#fff ON FIRST 2 OUTPUT Rhs.2, Lhs.0, Lhs.2, Lhs.3
         52825  ~0%    {5} r7 = JOIN r6 WITH OverrunWriteProductFlow#fb5ce006::bounded#3#fff ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Rhs.2
         52640  ~0%    {5} r8 = JOIN r7 WITH DataFlowUtil#47741e1f::InstructionNode#fff_20#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Rhs.1, Lhs.4, Lhs.3
                       return r8
```
2023-03-27 14:28:22 +02:00
Mathias Vorreiter Pedersen
1a6186496f C++: Accept test changes. 2023-03-27 13:20:17 +01:00
Mathias Vorreiter Pedersen
87c144d33b C++: Throw away the sign analysis when analyzing add expressions: instead, we now recursively analyze both operands. 2023-03-27 13:19:47 +01:00
Jeroen Ketema
d65b9ef32c Merge pull request #12661 from geoffw0/elementstests
C++: Restrict tests that output all elements
2023-03-27 09:04:11 +02:00
Jeroen Ketema
977f15f8a4 Merge pull request #12649 from jketema/unit
Replace all definitions of `Unit` by `import codeql.util.Unit`
2023-03-27 08:49:50 +02:00
Geoffrey White
202a717085 C++: Autoformat. 2023-03-24 22:10:51 +00:00
Geoffrey White
536c1939c0 C++: ... and rename the test to fit. 2023-03-24 19:50:13 +00:00
Geoffrey White
7096318884 C++: Focus the templates extern test on Declarations. 2023-03-24 19:50:13 +00:00
Geoffrey White
b5de2a5985 C++: Focus the lambda captures test on stuff inside the lambdas (including some that don't currently have locations). 2023-03-24 19:50:13 +00:00
Geoffrey White
d5b9cea4bc C++: Focus the CPP-205 test on the templates. 2023-03-24 17:45:36 +00:00
Geoffrey White
41a5dc8efe C++: Restrict tests that report all Elements to Elements in files. 2023-03-24 17:06:47 +00:00