Repository navigation
Audit: security, performance, DevOps, and hygiene fixes - #2
undivisible wants to merge 3 commits into
Conversation
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_704c36e0-13de-462a-9dcc-03f6572b5a66) |
|
Tick the box to add this pull request to the merge queue (same as
|
3fe2a41 to
ec2b06a
Compare
💡 Codex ReviewLines 375 to 376 in 3fe2a41 When loading bundled definitions such as vro/.github/workflows/release.yml Lines 74 to 79 in 3fe2a41 In the inspected release workflow, the Windows setup remains pinned to V 0.5.1 while Unix and normal CI build V from master, but this newly shared step now runs AGENTS.md reference: AGENTS.md:L27-L29 Line 166 in 3fe2a41 For a valid binary-only archive, such as one supplied through ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Align install.sh checksum URL with released vro-<platform>.sha256 assets, validate archive members, and avoid symlink write/rm hazards. Tighten CI/release permissions, require vfmt verify on Windows, pin the Windows V zip hash, and publish only archive+checksum artifacts. Co-authored-by: Max Carter 祁明思 <max@tsc.hk>
Limit hostile syntax alternation expansion, stop dirty-tail carry rescans when stable, skip undo snapshots for find/save, remove dead highlight helpers, and sanitize embedded syntax codegen basenames. Co-authored-by: Max Carter 祁明思 <max@tsc.hk>
ec2b06a to
31dc540
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_29a0232c-a6d7-4ec4-88a5-9b5ec6a6c03e) |
Co-authored-by: Max Carter 祁明思 <max@tsc.hk>
31dc540 to
2c2acb2
Compare
|
Closing as unmergeable under current CI. Two blockers found while rebasing:
|
Summary
Four audit tracks on
undivisible/vro, with findings kept separate from high-confidence scoped fixes. Speculative refactors and large performance rewrites were intentionally deferred.Validation evidence
v fmt -verify main.v input.v syntax.v syntax_test.v syntax_embedded.v— passv -gc none -check .— passv -gc none test .— pass (syntax_test.v, includes new expand-cap test)v -gc none -prod -o vro .&&./vro -version→vro 1.2.3bash -n install.sh— passvro-linux-x86_64.sha256→ 200 + checksum matches tarball;vro-linux-x86_64.tar.gz.sha256→ 404 (root cause of broken verified installs)Track 1 — Security & vulnerabilities
Findings (not all fixed)
${ASSET}.sha256but releases publishvro-<platform>.sha256vrorm -rf/cpcould follow planted symlinks in install pathsexpand_regex_groupsunbounded → DoS via untrusted localsyntax/*.yaml@v4/@v2)*Operational criticality for verified one-liner installs.
Changes
install.sh: correct checksum asset name; member allowlist (vro,syntax/**); require regular non-symlink binary; symlink-safe install/remove helperssyntax.v: capped alternation expansion (fail closed to original pattern)scripts/gen_embedded.v: reject unsafe syntax basenames before codegenTrack 2 — Performance & memory/async
Findings (high confidence; many deferred)
-gc none+ no frees → RSS growthbytestr()/ per-byte group stringsChanges
main.v:hl_carry_states_equal+ early break in dirty-tail path; conditional undo snapshotTrack 3 — DevOps & CI
Findings
fmt -w(mutated sources)fmt -verifyvrobinaries.sha256onlycontents: writepublishonlyprint-release-shas.shomittedlinux-aarch64Changes
.github/workflows/ci.yml:permissions: contents: read.github/workflows/release.yml: least privilege; Windows verify; Windows V zip SHA256 pin705bda7f…619f;release-assets/publish filterscripts/print-release-shas.sh: includelinux-aarch64Track 4 — Code hygiene & refactoring
Findings → fixes
YamlPat/YamlRegand deadhl_apply_regioneditor_open→editor_open_into_buffercompile_maybe_re→ wrapcompile_one_reapp_command_parts+editor_clear_screenin command runnerUsage: split <path>err.msg()AGENTS.md(five fmt files;input.vstub note) andv.mod→1.2.3test_expand_regex_groups_basic_and_capIntentionally not changed
input.v(kept for fmt/historical layout; documented)detect.filename(product decision)main.vsplits / undo rope redesignCommits
fix(security,ci): harden installer and release pipelinefix(editor): cap regex expand, early-exit HL carry, hygiene cleanupdocs: sync AGENTS fmt list and v.mod version with 1.2.3