From 4255f7f5609fcdaf1e9f4031b19f046cd7f09b11 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 25 Nov 2025 10:19:51 +0100 Subject: [PATCH] Address review comments --- .../codeql/rust/dataflow/internal/DataFlowConsistency.qll | 4 ---- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 7 +++---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index 47af6c239f2..ca6c0747ba3 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -19,10 +19,6 @@ private module Input implements InputSig { predicate postWithInFlowExclude(RustDataFlow::Node n) { n instanceof Node::FlowSummaryNode or - // We allow flow into post-update node for receiver expressions (from the - // synthetic post receiever node). - n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = any(Node::DerefBorrowNode r).getNode() - or n.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = getPostUpdateReverseStep(_, _) or FlowSummaryImpl::Private::Steps::sourceLocalStep(_, n, _) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index b5f4c678205..a9493a97340 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -29,12 +29,11 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] + - ["::new", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"] - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"] - - ["::into_inner", "Argument[0]", "ReturnValue", "value", "manual"] + - ["::into_inner", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"] - ["::into_inner_unchecked", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"] - - ["::set", "Argument[0]", "Argument[self]", "value", "manual"] + - ["::set", "Argument[0]", "Argument[self].Reference.Field[core::pin::Pin::pointer]", "value", "manual"] # Ptr - ["core::ptr::read", "Argument[0].Reference", "ReturnValue", "value", "manual"] - ["core::ptr::read_unaligned", "Argument[0].Reference", "ReturnValue", "value", "manual"]