rea/src/process/ProcessOwnershipIdentity.ts

26 lines
953 B
TypeScript

import { matchesOwnedProcessCommand } from "./ProcessCommandIdentity.js";
import type {
OwnedProcessGroup,
ProcessTableEntry,
} from "./ProcessOwnership.js";
/** Compare a live launcher against the identity committed at process launch. */
export const launcherIdentityFailure = (
launcher: ProcessTableEntry,
ownership: OwnedProcessGroup,
): string | null => {
if (launcher.processGroupId !== ownership.processGroupId)
return "owned launcher process-group identity did not match";
if (
ownership.expectedParentPid !== undefined &&
launcher.parentPid !== ownership.expectedParentPid
)
return "owned launcher parent identity did not match";
if (
ownership.expectedCommand !== undefined &&
!matchesOwnedProcessCommand(launcher.command, ownership.expectedCommand)
)
return `owned launcher command identity did not match (observed=${launcher.command}; expected=${ownership.expectedCommand})`;
return null;
};