Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions rust/ql/lib/change-notes/2026-11-05-regenerated-models.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Regenerated the Rust library models and added manual flow summaries for the blanket `Into` implementation, `String::from`, and `Cow::to_mut` to preserve flow through conversions.
7 changes: 7 additions & 0 deletions rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ extensions:
- ["<alloc::boxed::Box>::pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]", "value", "manual"]
- ["<alloc::boxed::Box>::new", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(0)]", "value", "manual"]
- ["<alloc::boxed::Box>::into_pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"]
# Cow
- ["<alloc::borrow::Cow>::to_mut", "Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Reference", "value", "manual"]
- ["<alloc::borrow::Cow>::to_mut", "Argument[self].Reference.Field[alloc::borrow::Cow::Borrowed(0)].Reference", "ReturnValue.Reference", "taint", "manual"]
# Fmt
- ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"]
# Layout
Expand All @@ -48,6 +51,10 @@ extensions:
- ["<core::alloc::layout::Layout>::pad_to_align", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
- ["<core::alloc::layout::Layout>::size", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
# String
# The generated model merges identity conversions with conversions from borrowed strings.
- ["<alloc::string::String as core::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["<alloc::string::String as core::convert::From>::from", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue", "value", "manual"]
- ["<alloc::string::String as core::convert::From>::from", "Argument[0].Field[alloc::borrow::Cow::Borrowed(0)].Reference", "ReturnValue", "taint", "manual"]
- ["<alloc::string::String>::as_str", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"]
- ["<alloc::string::String>::as_bytes", "Argument[self].Reference", "ReturnValue.Reference.Element", "taint", "manual"]
- ["<alloc::string::ToString>::to_string", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
Expand Down
4 changes: 4 additions & 0 deletions rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ extensions:
# Conversions
- ["<core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"]
- ["<core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"]
# Exact models for the blanket implementation take precedence over inherited models.
- ["<_ as core::convert::Into>::into", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["<_ as core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"]
- ["<_ as core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"]
# From
- ["<core::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "manual"]
# Iterator
Expand Down
612 changes: 385 additions & 227 deletions rust/ql/lib/ext/generated/modelgenerator/actix-web.model.yml

Large diffs are not rendered by default.

464 changes: 237 additions & 227 deletions rust/ql/lib/ext/generated/modelgenerator/clap.model.yml

Large diffs are not rendered by default.

163 changes: 97 additions & 66 deletions rust/ql/lib/ext/generated/modelgenerator/hyper.model.yml

Large diffs are not rendered by default.

201 changes: 125 additions & 76 deletions rust/ql/lib/ext/generated/modelgenerator/libc.model.yml

Large diffs are not rendered by default.

62 changes: 26 additions & 36 deletions rust/ql/lib/ext/generated/modelgenerator/log.model.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,29 @@ extensions:
- ["<alloc::string::String as log::kv::key::ToKey>::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"]
- ["<alloc::string::String as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<alloc::sync::Arc as log::kv::source::Source>::get", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<core::bool as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::char as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::f32 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::f64 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::i128 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::i16 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::i32 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::i64 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::i8 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::isize as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::bool as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::char as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::f32 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::f64 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::i128 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::i16 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::i32 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::i64 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::i8 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::isize as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::option::Option as log::kv::source::Source>::count", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
- ["<core::option::Option as log::kv::source::Source>::count", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"]
- ["<core::option::Option as log::kv::source::Source>::get", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<core::option::Option as log::kv::source::Source>::get", "Argument[self]", "Argument[0]", "taint", "df-generated"]
- ["<core::str as log::kv::key::ToKey>::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"]
- ["<core::str as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::u128 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::u16 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::u32 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::u64 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::u8 as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::usize as log::kv::value::ToValue>::to_value", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<core::str as log::kv::value::ToValue>::to_value", "Argument[self].Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::str as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::u128 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::u16 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::u32 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::u64 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::u8 as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<core::usize as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<log::KeyValues as core::fmt::Debug>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<log::MaybeStaticStr as core::fmt::Debug>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<log::Metadata as core::fmt::Debug>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"]
Expand All @@ -44,14 +46,18 @@ extensions:
- ["<log::MetadataBuilder>::level", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["<log::MetadataBuilder>::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"]
- ["<log::ParseLevelError as core::fmt::Debug>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record as core::clone::Clone>::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record as core::clone::Clone>::clone", "Argument[self].Field[log::Record::file]", "ReturnValue.Field[log::Record::file]", "value", "dfc-generated"]
- ["<log::Record as core::clone::Clone>::clone", "Argument[self].Field[log::Record::line]", "ReturnValue.Field[log::Record::line]", "value", "dfc-generated"]
- ["<log::Record as core::clone::Clone>::clone", "Argument[self].Field[log::Record::module_path]", "ReturnValue.Field[log::Record::module_path]", "value", "dfc-generated"]
- ["<log::Record as core::fmt::Debug>::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::args", "Argument[self].Reference.Field[log::Record::args]", "ReturnValue.Reference", "value", "dfc-generated"]
- ["<log::Record>::file", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::file_static", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::key_values", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::level", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::line", "Argument[self].Reference.Field[log::Record::line]", "ReturnValue", "value", "dfc-generated"]
- ["<log::Record>::metadata", "Argument[self].Reference.Field[log::Record::metadata]", "ReturnValue.Reference", "value", "dfc-generated"]
- ["<log::Record>::module_path", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::module_path_static", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::target", "Argument[self]", "ReturnValue", "taint", "df-generated"]
- ["<log::Record>::to_builder", "Argument[self]", "ReturnValue", "taint", "df-generated"]
Expand Down Expand Up @@ -84,23 +90,7 @@ extensions:
- ["<log::kv::key::Key>::from_str", "Argument[0]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"]
- ["<log::kv::key::Key>::to_borrowed_str", "Argument[self].Reference.Field[log::kv::key::Key::key]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"]
- ["<log::kv::value::Value as core::clone::Clone>::clone", "Argument[self].Field[log::kv::value::Value::inner]", "ReturnValue.Field[log::kv::value::Value::inner]", "value", "dfc-generated"]
- ["<log::kv::value::Value as core::convert::From>::from", "Argument[0].Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<log::kv::value::Value as core::convert::From>::from", "Argument[0].Reference.Element", "ReturnValue.Field[log::kv::value::Value::inner].Element", "taint", "dfc-generated"]
- ["<log::kv::value::Value as core::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["<log::kv::value::Value as log::kv::value::ToValue>::to_value", "Argument[self].Reference.Field[log::kv::value::Value::inner]", "ReturnValue.Field[log::kv::value::Value::inner]", "value", "dfc-generated"]
- addsTo:
pack: codeql/rust-all
extensible: sinkModel
data:
- ["<alloc::collections::btree::map::BTreeMap as log::kv::source::Source>::get", "Argument[self]", "alloc-layout", "df-generated"]
- ["<alloc::collections::btree::map::BTreeMap as log::kv::source::Source>::get", "Argument[self]", "log-injection", "df-generated"]
- ["<log::Record>::file", "Argument[self]", "alloc-layout", "df-generated"]
- ["<log::Record>::file", "Argument[self]", "log-injection", "df-generated"]
- ["<log::Record>::module_path", "Argument[self]", "alloc-layout", "df-generated"]
- ["<log::Record>::module_path", "Argument[self]", "log-injection", "df-generated"]
- ["<log::RecordBuilder>::file", "Argument[0]", "alloc-layout", "df-generated"]
- ["<log::RecordBuilder>::file", "Argument[0]", "log-injection", "df-generated"]
- ["<log::RecordBuilder>::file_static", "Argument[0]", "alloc-layout", "df-generated"]
- ["<log::RecordBuilder>::file_static", "Argument[0]", "log-injection", "df-generated"]
- ["<log::RecordBuilder>::module_path", "Argument[0]", "alloc-layout", "df-generated"]
- ["<log::RecordBuilder>::module_path", "Argument[0]", "log-injection", "df-generated"]
- ["<log::RecordBuilder>::module_path_static", "Argument[0]", "alloc-layout", "df-generated"]
- ["<log::RecordBuilder>::module_path_static", "Argument[0]", "log-injection", "df-generated"]
Loading
Loading