diff --git a/cpp/ql/src/Likely Bugs/Memory Management/SuspiciousCallToMemset.ql b/cpp/ql/src/Likely Bugs/Memory Management/SuspiciousCallToMemset.ql index 5954c4dedcfc..45ba293867cb 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/SuspiciousCallToMemset.ql +++ b/cpp/ql/src/Likely Bugs/Memory Management/SuspiciousCallToMemset.ql @@ -54,13 +54,13 @@ Type stripType(Type t) { /** * Holds if `t` points to `base` via a specified number of levels of pointer - * indirection. Intermediate typedefs and array types are allowed. + * indirection. Intermediate typedefs and array types are allowed. Note that + * `base` is a stripped type (via `stripType`). */ predicate pointerIndirection(Type t, int indirection, Type base) { - exists(Type u | - u = stripType(t) and - u = stripType(base) and - not u instanceof PointerType and + ( + base = stripType(t) and + not base instanceof PointerType and indirection = 0 ) or ( pointerIndirection(stripType(t).(PointerType).getBaseType(), indirection - 1, base) diff --git a/cpp/ql/src/META-INF/MANIFEST.MF b/cpp/ql/src/META-INF/MANIFEST.MF index 1b820007d8f7..b7387557cc25 100644 --- a/cpp/ql/src/META-INF/MANIFEST.MF +++ b/cpp/ql/src/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Semmle C/C++ Default Queries Bundle-SymbolicName: com.semmle.plugin.semmlecode.cpp.queries;singleton:=true -Bundle-Version: 1.18.2.qualifier +Bundle-Version: 1.18.3.qualifier Bundle-Vendor: Semmle Ltd. Bundle-ActivationPolicy: lazy -Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.2.qualifier,1.18.2.qualifier]" +Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.3.qualifier,1.18.3.qualifier]" diff --git a/cpp/ql/src/semmle/code/cpp/controlflow/internal/ConstantExprs.qll b/cpp/ql/src/semmle/code/cpp/controlflow/internal/ConstantExprs.qll index 4efa7b53a2be..3842742325fd 100644 --- a/cpp/ql/src/semmle/code/cpp/controlflow/internal/ConstantExprs.qll +++ b/cpp/ql/src/semmle/code/cpp/controlflow/internal/ConstantExprs.qll @@ -442,12 +442,17 @@ library class ExprEvaluator extends int { ) } + /** Holds if the function `f` is considered by the analysis and may return `ret`. */ + pragma[noinline] + private predicate interestingReturnValue(Function f, Expr ret) { + interestingFunction(_, f) and + returnStmt(f, ret) + } + private int getFunctionValue(Function f) { - interestingFunction(_, f) - and // All returns must have the same int value // And it must have at least one return - forex(Expr ret | returnStmt(f, ret) | result = getValueInternalNonSubExpr(ret)) + forex(Expr ret | interestingReturnValue(f, ret) | result = getValueInternalNonSubExpr(ret)) } /** diff --git a/csharp/ql/src/META-INF/MANIFEST.MF b/csharp/ql/src/META-INF/MANIFEST.MF index d4035e8144db..9ee778191ae9 100644 --- a/csharp/ql/src/META-INF/MANIFEST.MF +++ b/csharp/ql/src/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Semmle C# Default Queries Bundle-SymbolicName: com.semmle.plugin.semmlecode.csharp.queries;singleton:=true -Bundle-Version: 1.18.2.qualifier +Bundle-Version: 1.18.3.qualifier Bundle-Vendor: Semmle Ltd. Bundle-ActivationPolicy: lazy -Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.2.qualifier,1.18.2.qualifier]" +Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.3.qualifier,1.18.3.qualifier]" diff --git a/java/ql/src/META-INF/MANIFEST.MF b/java/ql/src/META-INF/MANIFEST.MF index 7658efa850d0..cb4864fe9d76 100644 --- a/java/ql/src/META-INF/MANIFEST.MF +++ b/java/ql/src/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Semmle Default Java Queries Bundle-SymbolicName: com.semmle.plugin.semmlecode.queries;singleton:=true -Bundle-Version: 1.18.2.qualifier +Bundle-Version: 1.18.3.qualifier Bundle-Vendor: Semmle Ltd. Bundle-ActivationPolicy: lazy -Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.2.qualifier,1.18.2.qualifier]" +Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.3.qualifier,1.18.3.qualifier]" diff --git a/javascript/ql/src/META-INF/MANIFEST.MF b/javascript/ql/src/META-INF/MANIFEST.MF index be51fbc55958..4313cac94f7a 100644 --- a/javascript/ql/src/META-INF/MANIFEST.MF +++ b/javascript/ql/src/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Semmle JavaScript Default Queries Bundle-SymbolicName: com.semmle.plugin.semmlecode.javascript.queries;singleton:=true -Bundle-Version: 1.18.2.qualifier +Bundle-Version: 1.18.3.qualifier Bundle-Vendor: Semmle Ltd. Bundle-ActivationPolicy: lazy -Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.2.qualifier,1.18.2.qualifier]" +Require-Bundle: com.semmle.plugin.qdt.ui;bundle-version="[1.18.3.qualifier,1.18.3.qualifier]"