Geoffrey White
56fe91d774
CPP: cached -> pragma[nomagic].
2019-03-05 08:59:16 +00:00
Max Schaefer
7f5e2630a1
Merge pull request #1032 from xiemaisi/master-for-merge
...
Merge master into rc/1.20
2019-03-04 21:23:51 +00:00
Geoffrey White
eb4efc4745
Merge pull request #1023 from jbj/gets-qualified
...
C++: Use getQualifiedName() = "gets", not hasName
2019-03-04 18:10:15 +00:00
Kevin Backhouse
8cee18b479
Add assignments to the set of analyzable expressions to simplify overflow detection.
2019-03-04 17:07:11 +00:00
Geoffrey White
a9ce2f7a62
CPP: Simplify out some old optimizations (that make little difference now).
2019-03-04 13:13:04 +00:00
Geoffrey White
df73bb3468
CPP: Fix performance issue. Also has a small positive effect on correctness.
2019-03-04 12:47:55 +00:00
Geoffrey White
f0085ed25a
CPP: Additional test cases.
2019-03-04 12:45:05 +00:00
Jonas Jensen
4f9ffb38e6
C++: Set cpp/command-line-injection precision=low
...
This query is only appropriate for setuid programs. Since such programs
are at most 0.1% of all code we analyse, I would say this query has a
precision of at most 0.1%.
2019-03-04 09:51:33 +01:00
Jonas Jensen
c49c23068a
Merge pull request #923 from geoffw0/potentialbufferoverflow
...
CPP: Deprecate PotentialBufferOverflow.ql
2019-03-04 08:11:27 +00:00
Jonas Jensen
0ed1618824
C++: Use getQualifiedName() = "gets", not hasName
...
This fixes false positives on
https://lgtm.com/projects/g/brandonpelfrey/Construct caused by a member
function named `gets` -- probably short for "get s".
2019-03-04 09:01:20 +01:00
Robert Marsh
b8f8ed55e6
Merge pull request #1000 from jbj/dataflow-defbyref
...
C++: Support definition by reference in data flow library
2019-03-01 13:54:37 -08:00
Geoffrey White
66013272da
Merge pull request #894 from jbj/ir-RedundantNullCheckSimple
...
C++: IR query for redundant null check
2019-03-01 15:34:18 +00:00
Nick Rolfe
e6ddf7f48a
Merge pull request #1012 from ian-semmle/constexpr
...
C++: Add Variable.isConstexpr()
2019-03-01 14:42:35 +00:00
Geoffrey White
28304e4fde
Merge pull request #1005 from jbj/dataflow-Node-cached
...
C++: Cache TNode and localFlowStep
2019-02-28 17:43:14 +00:00
Ian Lynagh
a709a2d0f3
C++: Add Variable.isConstexpr()
2019-02-28 15:26:15 +00:00
Geoffrey White
832a436a49
Revert "C++: Revert doc-related changes to dbscheme"
...
This reverts commit e81d197ebd .
2019-02-28 14:50:49 +00:00
Geoffrey White
e55dc43111
CPP: Consistency changes suggested by Dave.
2019-02-28 14:50:49 +00:00
Geoffrey White
b1bf1b8f1c
CPP: More annotations.
2019-02-28 14:50:49 +00:00
Geoffrey White
dd271f1c93
CPP: Fix type 'diagnosstic'.
2019-02-28 14:50:49 +00:00
Geoffrey White
0c84e06234
CPP: Fix typo.
2019-02-28 14:50:49 +00:00
Geoffrey White
6398298bea
CPP: Add keyset annotations to the CPP dbscheme.
2019-02-28 14:50:49 +00:00
Jonas Jensen
40f3fecb00
C++: Simplify stubs in DataFlowDispatch.qll
...
Some of these stubs were quite slow to evaluate. It's possible they
could be optimised, but it seems pointless as long as we don't have
call-context-sensitive virtual dispatch in the C++ library.
2019-02-28 14:38:29 +01:00
Jonas Jensen
264301be66
C++: Cache TNode and localFlowStep
...
These two elements weren't cached, which meant that local data flow was
recalculated in every query that used data flow. They are also cached in
the Java version of `DataFlowUtil.qll`.
2019-02-28 11:41:51 +01:00
Jonas Jensen
8e6daafd7c
C++: Add DefinitionByReferenceNode.getParameter
...
This commits also adds a test that uses `getParameter`. The new tests
demonstrate that support for array-to-pointer decay works, but we get
data flow to the array rather than its contents.
2019-02-28 09:39:51 +01:00
Jonas Jensen
2bc0a8d6fb
C++: Remove getVariableAccess from def-by-ref node
...
This accessor may not be forward-compatible with an IR-based version,
and it's unclear whether it has any use. The `VariableAccess` remains in
the `TDefinitionByReferenceNode` constructor since it's used to
implement `getType`.
2019-02-28 09:38:40 +01:00
Jonas Jensen
7ff732d962
C++: Use OO dispatch for getType and getFunction
2019-02-28 08:23:24 +01:00
Jonas Jensen
972d00822c
C++: Generalize std::move data flow
2019-02-27 15:53:00 +01:00
Jonas Jensen
80183464d9
C++: Define DefinitionByReferenceNode
...
This enables data flow through `memcpy` and similar functions modeled in
`semmle.code.cpp.model`.
2019-02-27 15:53:00 +01:00
Jonas Jensen
5647a1a658
C++: BlockVar value stops at def by ref (partial)
2019-02-27 15:05:53 +01:00
Geoffrey White
25a5ff5e55
CPP: Similarly update other @deprecated messages.
2019-02-27 13:20:24 +00:00
Geoffrey White
f0356bb83b
CPP: Reformat @deprecated message.
2019-02-27 13:18:29 +00:00
Geoffrey White
3f2e902912
CPP: Remove it from the security dashboard (OverrunWrite.ql is already on there).
2019-02-27 13:09:09 +00:00
Geoffrey White
45315cda90
CPP: Deprecate PotentialBufferOverflow.ql.
2019-02-27 13:09:09 +00:00
Geoffrey White
8a5bc24b36
CPP: Replace PotentialBufferOverflow with OverrunWrite in the test.
2019-02-27 13:09:09 +00:00
Geoffrey White
7194121eae
CPP: Expand the test cases covering PotentialBufferOverflow.ql.
2019-02-27 13:09:09 +00:00
Jonas Jensen
20f3df0d09
C++: Add tests to demo lack dataflow by reference
2019-02-27 13:19:16 +01:00
semmle-qlci
d857f52c7d
Merge pull request #991 from jbj/error-function-returns
...
Approved by geoffw0
2019-02-27 08:01:39 +00:00
Dave Bartolomeo
84c7f195d6
Merge pull request #994 from geoffw0/msalloc
...
CPP: Add lots more allocation functions to Alloc.qll
2019-02-26 11:59:45 -08:00
Geoffrey White
e32042d69c
CPP: Add support for Microsoft functions in Alloc.qll.
2019-02-26 17:11:37 +00:00
Jonas Jensen
07bd85e9fa
C++: Function error doesn't always exit
...
The configuration in `DefaultOptions.qll` assumed that a call to any
top-level function named `error` would exit the program. This is not
true.
The assumption was probably about `error(3)`, which is a GNU extension.
It only exits if its first argument it not 0. Furthermore, projects such
as openssh may define their own function named `error` with different
behaviour. Because the GNU `error` function is non-standard, it's
perfectly fine to shadow it with a project-specific definition.
This change removes two FPs from `PointlessComparison.qll` on
https://github.com/openssh/openssh-portable .
2019-02-26 16:31:34 +01:00
Jonas Jensen
f12dfda28f
Merge pull request #985 from rdmarsh2/rdmarsh/ir-call-side-effect
...
C++: fix PrimaryInstruction for call side effects
2019-02-26 10:36:18 +01:00
Robert Marsh
af490a9b3e
C++: fix PrimaryInstruction for call side effects
2019-02-25 11:41:40 -08:00
Ian Lynagh
ad126b93cf
C++: Remove a use of deprecated Function.getFullSignature()
2019-02-25 15:51:39 +00:00
Ian Lynagh
f02a4ce63e
C++: Accept test changes following new *constexpr specifiers
2019-02-25 12:48:48 +00:00
Ian Lynagh
4bd03d52f1
C++: Add constexpr support for functions
2019-02-25 12:48:48 +00:00
Ian Lynagh
5db38ef14b
C++: Add a test for constexpr functions
2019-02-25 12:48:48 +00:00
Jonas Jensen
a9f8a53dac
Merge pull request #972 from geoffw0/rtl
...
CPP: Add support for the Rtl* functions in BufferAccess.ql
2019-02-25 13:07:05 +01:00
Jonas Jensen
2181bca389
C++: Remove @precision of AllocaInLoop.ql
...
A PR check was failing because this query was enabled on LGTM but had no
qhelp. I'm removing the `@precision` for now to take it off LGTM, and
then we can add it back when it has qhelp, tests, and change note.
2019-02-25 11:45:34 +01:00
Dave Bartolomeo
70bccf85fc
Merge pull request #970 from jbj/ir-block-count
...
C++: Use the cached getInstructionCount
2019-02-22 10:19:39 -08:00
Geoffrey White
dc0044288b
CPP: Add support for some Rtl* functions in BufferAccess.qll.
2019-02-22 15:54:16 +00:00