diff --git a/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll b/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll index 457a3b8eced..247f654a310 100644 --- a/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll +++ b/cpp/ql/lib/semmle/code/cpp/security/BufferAccess.qll @@ -131,11 +131,10 @@ class StrncpyBA extends BufferAccess { result = this.(FunctionCall).getArgument(0) and bufferDesc = "destination buffer" and accessType = 2 - // Ignore this case as reading past the source null terminator is not the behavior of strncpy - // or - // result = this.(FunctionCall).getArgument(1) and - // bufferDesc = "source buffer" and - // accessType = 2 + or + result = this.(FunctionCall).getArgument(1) and + bufferDesc = "source buffer" and + accessType = 4 } override Expr getSizeExpr() { result = this.(FunctionCall).getArgument(2) } diff --git a/rust/lint.py b/rust/lint.py old mode 100644 new mode 100755 index 1af2470dbbc..3a231c157df --- a/rust/lint.py +++ b/rust/lint.py @@ -5,12 +5,14 @@ import pathlib import shutil import sys -extractor_dir = pathlib.Path(__file__).resolve().parent / "extractor" +this_dir = pathlib.Path(__file__).resolve().parent cargo = shutil.which("cargo") assert cargo, "no cargo binary found on `PATH`" -fmt = subprocess.run([cargo, "fmt", "--quiet"], cwd=extractor_dir) -clippy = subprocess.run([cargo, "clippy", "--fix", "--allow-dirty", "--allow-staged", "--quiet"], - cwd=extractor_dir) +fmt = subprocess.run([cargo, "fmt", "--all", "--quiet"], cwd=this_dir) +for manifest in this_dir.rglob("Cargo.toml"): + if not manifest.is_relative_to(this_dir / "ql") and not manifest.is_relative_to(this_dir / "integration-tests"): + clippy = subprocess.run([cargo, "clippy", "--fix", "--allow-dirty", "--allow-staged", "--quiet"], + cwd=manifest.parent) sys.exit(fmt.returncode or clippy.returncode) diff --git a/rust/tools/autobuild.sh b/rust/tools/autobuild.sh old mode 100644 new mode 100755 index b35a1729858..fdea6e80e52 --- a/rust/tools/autobuild.sh +++ b/rust/tools/autobuild.sh @@ -2,5 +2,4 @@ exec "${CODEQL_DIST}/codeql" database index-files \ --working-dir=. --language=rust --include-extension=.rs \ - ${CODEQL_VERBOSITY:+"--verbosity=${CODEQL_VERBOSITY}"} \ "${CODEQL_EXTRACTOR_RUST_WIP_DATABASE}" diff --git a/rust/tools/index-files.sh b/rust/tools/index-files.sh old mode 100644 new mode 100755 index da4b841b692..f3d93fbaf4a --- a/rust/tools/index-files.sh +++ b/rust/tools/index-files.sh @@ -2,4 +2,4 @@ set -eu -exec "$CODEQL_EXTRACTOR_RUST_ROOT/tools/$CODEQL_PLATFORM/extractor" --inputs-file="$1" +exec "$CODEQL_EXTRACTOR_RUST_ROOT/tools/$CODEQL_PLATFORM/extractor" @"$1" diff --git a/rust/tools/qltest.sh b/rust/tools/qltest.sh old mode 100644 new mode 100755