mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-21 20:18:06 +02:00
docs: Enhance module documentation across various files for clarity a… (#62)
* docs: Enhance module documentation across various files for clarity and completeness * fix: Remove unnecessary blank line in build.rs for cleaner code * docs: Update documentation to improve clarity and consistency in code comments
This commit is contained in:
parent
40995e45e7
commit
1f2bfe76c1
44 changed files with 721 additions and 366 deletions
|
|
@ -71,14 +71,14 @@ pub struct SsaTaintTransfer<'a> {
|
|||
/// The [`BodyId`] of the body currently being analysed. Used as the
|
||||
/// owning scope when writing seed entries that leave this body
|
||||
/// (e.g. [`extract_ssa_exit_state`]) and as the identity recorded on
|
||||
/// engine notes. Defaults to [`BodyId(0)`] (top-level) for inline
|
||||
/// engine notes. Defaults to `BodyId(0)` (top-level) for inline
|
||||
/// probes and unit tests that analyse a single synthetic body.
|
||||
pub owner_body_id: BodyId,
|
||||
/// The [`BodyId`] of this body's lexical parent, if any. Drives the
|
||||
/// `Param`-op reader's lookup into [`Self::global_seed`]: we read
|
||||
/// from the parent's scope first (the seed entries produced by
|
||||
/// [`extract_ssa_exit_state`] on the parent body), then fall back to
|
||||
/// [`BodyId(0)`] to pick up JS/TS two-level re-keyed entries (see
|
||||
/// `BodyId(0)` to pick up JS/TS two-level re-keyed entries (see
|
||||
/// [`filter_seed_to_toplevel`]). `None` for the top-level body and
|
||||
/// for probes with no surrounding scope.
|
||||
pub parent_body_id: Option<BodyId>,
|
||||
|
|
@ -176,7 +176,7 @@ pub struct SsaTaintTransfer<'a> {
|
|||
/// to detect handler-style flows that have no registered caller.
|
||||
pub auto_seed_handler_params: bool,
|
||||
/// Cross-file callee bodies sourced from
|
||||
/// [`GlobalSummaries::bodies_iter`]. Populated in pass 2 to enable
|
||||
/// [`GlobalSummaries`]. Populated in pass 2 to enable
|
||||
/// context-sensitive inline re-analysis across file boundaries the
|
||||
/// same way `callee_bodies` enables it intra-file. `None` preserves
|
||||
/// non-cross-file behaviour for unit tests and non-cross-file
|
||||
|
|
|
|||
|
|
@ -366,7 +366,7 @@ pub struct SsaTaintState {
|
|||
/// = false`).
|
||||
pub abstract_state: Option<AbstractState>,
|
||||
/// per-heap-field taint cells, keyed by
|
||||
/// `(parent_loc, field)`. Sorted by [`FieldTaintKey`] for O(n)
|
||||
/// `(parent_loc, field)`. Sorted by `FieldTaintKey` for O(n)
|
||||
/// merge-join. Populated only when the body's
|
||||
/// [`crate::pointer::PointsToFacts`] is available
|
||||
/// (`NYX_POINTER_ANALYSIS=1`); empty otherwise so the lattice join
|
||||
|
|
@ -375,7 +375,7 @@ pub struct SsaTaintState {
|
|||
/// them. Cross-call propagation lands during lowering via the
|
||||
/// field-granularity `PointsToSummary`.
|
||||
///
|
||||
/// Cell shape: [`FieldCell`] carries `taint` plus
|
||||
/// Cell shape: `FieldCell` carries `taint` plus
|
||||
/// `validated_must` / `validated_may` flags so validation flows
|
||||
/// through abstract field / element identity.
|
||||
pub field_taint: SmallVec<[(FieldTaintKey, FieldCell); 4]>,
|
||||
|
|
@ -405,7 +405,7 @@ impl SsaTaintState {
|
|||
|
||||
/// read the field cell at `key`. Returns `None`
|
||||
/// when no cell has been recorded (caller should treat as
|
||||
/// untainted). O(log n) on the sorted [`field_taint`] list.
|
||||
/// untainted). O(log n) on the sorted `field_taint` list.
|
||||
pub fn get_field(&self, key: FieldTaintKey) -> Option<&FieldCell> {
|
||||
self.field_taint
|
||||
.binary_search_by_key(&key, |(k, _)| *k)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ const MAX_PROBE_PARAMS: usize = 8;
|
|||
|
||||
/// Extract a precise per-parameter `SsaFuncSummary` from an already-lowered SSA body.
|
||||
///
|
||||
/// For each parameter (up to [`MAX_PROBE_PARAMS`]), runs a taint probe by seeding
|
||||
/// For each parameter (up to `MAX_PROBE_PARAMS`), runs a taint probe by seeding
|
||||
/// that parameter with `Cap::all()` via `global_seed` and observing what caps
|
||||
/// survive to return positions and which sinks fire. A final probe with no params
|
||||
/// tainted detects intrinsic source caps.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue