Skip to content

Table deletion, Change Case and field unlink bypass revision and content-control checks #1329

Closed

Description

@PierrunoYT

Scope and verification

Read-only source audit of upstream main at 159b84f. Audit reference: M2.
Severity: Medium (integrity). Confidence: high in the cited source flow. No runtime reproduction, exploit input, destructive testing, or source changes; resource-exhaustion consequences have not been measured.

Root cause and evidence

crates/engine/src/cmd/table.rs:496–546 physically removes table structures without tracked deletion or control-lock validation. crates/engine/src/cmd/format.rs:414–424 directly changes text; crates/engine/src/cmd/fields.rs:204–228 directly replaces field markers/results. Formatting revision recording is not a general text/structural revision recorder.

Conditions and realistic impact

With tracking enabled or locked controls in the target, these operations can alter protected content or make edits Reject All cannot restore. Ordinary Undo being available does not satisfy tracked-change or control-lock contracts.

Recommended remediation

Use centralized revision/control-aware replacement and deletion. Refuse unsupported structural edits while tracking until they have a structural revision representation.

Suggested regression tests

All table deletion variants against lockDelete controls; Change Case and Unlink inside lockEdit content; all operations on pre-existing tracked content followed by Reject All. Require refusal or faithful restoration.

Activity

  1. dkhlapov commented on Oct 13, 2026

    @dkhlapov
    Contributor

    I'm working on this.

  2. added 4 commits that reference this issue on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions