Skip to content

vms-387: re-anchor register-continue-identity-dropped at the identity/privilege copy SITE - #1223

Merged
baron-3dl merged 1 commit into
mainfrom
work/vms-387-regcont-reanchor
Sep 13, 2026
Merged

vms-387: re-anchor register-continue-identity-dropped at the identity/privilege copy SITE#1223
baron-3dl merged 1 commit into
mainfrom
work/vms-387-regcont-reanchor

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

What

Re-anchors the register-continue-identity-dropped negctl defect at the identity/privilege copy SITE in vms_proc_continue_identity() (OPTION 1, the never-orphan invariant), replacing the drifted shared_vms_pid anchor.

Why

On origin/main the old anchor shared_vms_pid = parent->vms_pid no longer matched (source refactored PID-sharing into if (share_pid), 12-space indent) → selftest FAIL. Even when it had matched, it only stopped PID sharing (reddening test_kmod_exit) while the identity copy ran intact — leaving test_syssvc_identcont orphaned with no can-fail anchor (conductor FINDING 1).

Change

Zero the unconditional privilege copy proc->cur_privs = parent->cur_privs inside the parent mode_lock. The continued image and the $CREPRC subprocess both still register (CONTINUE_STATUS=1, username/UIC copied) but carry privs 0 — a genuine, name-honest identity defect at the exact site, not the PID-sharing lie.

Because the copy is shared by both entry points, the honest can-fail set is both consumers:

  • test_syssvc_identcont — SYSPRV/FIELD parent images lose their mask
  • test_syssvc_creprc_inherit — a non-root subprocess loses the SYS_PRIVS it should inherit from the executive (previously had no anchor either)

Proof

  • selftest: injects + no-op-reapply-has-teeth ok; every require_fail/knock_on_fail label exists literally in a suite source; fixes the register-continue drift FAIL.
  • Runtime exact-red set proven separately via negctl-adhoc before flagging for reap.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HMDFjHCqxDuXgbyxNU572h

…/privilege copy SITE (OPTION 1)

The old anchor `shared_vms_pid = parent->vms_pid` drifted: the source
refactored PID-sharing into `if (share_pid)` (12-space indent), so the
8-space sed no longer matched -- the defect was a selftest FAIL on
origin/main, and even when it had matched it only stopped PID sharing
(reddening test_kmod_exit's PID-share check) while the identity copy ran
intact, leaving test_syssvc_identcont ORPHANED with no can-fail anchor.

Re-anchor at the copy SITE itself per the never-orphan invariant
(re-anchor > retire+refile > scope-out): zero the UNCONDITIONAL privilege
copy `proc->cur_privs = parent->cur_privs` inside vms_proc_continue_identity().
The continued image (REGISTER_CONTINUE) and the $CREPRC subprocess
(REGISTER_SUBPROCESS) both still register (CONTINUE_STATUS=1, username/UIC
copied), but carry privs 0 instead of the mask the executive should have
carried forward. That is a genuine, name-honest identity defect at the
exact site, NOT the PID-sharing lie.

Because the copy is shared by both entry points (share_pid is the only
differing branch, forbidden as a re-anchor), the honest can-fail set is
BOTH consumers: test_syssvc_identcont (SYSPRV/FIELD parent images lose
their mask) AND test_syssvc_creprc_inherit (a non-root subprocess loses
the SYS_PRIVS it should inherit from the executive). This also gives
creprc_inherit a can-fail anchor it previously lacked.

selftest: injects + no-op-reapply-has-teeth ok; every require_fail/
knock_on_fail label exists literally in a suite source. Runtime exact-red
set proven separately via negctl-adhoc before flagging for reap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HMDFjHCqxDuXgbyxNU572h
@baron-3dl
baron-3dl merged commit d3571eb into main Sep 13, 2026
124 of 126 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant