running-process 4.6.0__tar.gz → 4.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {running_process-4.6.0 → running_process-4.6.1}/Cargo.lock +11 -11
- {running_process-4.6.0 → running_process-4.6.1}/Cargo.toml +1 -1
- {running_process-4.6.0 → running_process-4.6.1}/PKG-INFO +1 -1
- running_process-4.6.1/crates/running-process/src/README.md +16 -0
- running_process-4.6.1/crates/running-process/src/environment.rs +302 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn.rs +5 -2
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/Cargo.toml +1 -1
- {running_process-4.6.0 → running_process-4.6.1}/pyproject.toml +1 -1
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/__init__.py +1 -1
- running_process-4.6.0/crates/running-process/src/environment.rs +0 -142
- {running_process-4.6.0 → running_process-4.6.1}/LICENSE +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/Cargo.toml +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/build.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_control.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_manifest.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_service_def.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/daemon.proto +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/daemon.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-broker-v2.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/runpm.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/trampoline.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/linux.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/macos.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/adopt.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_handle.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/wire.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/frame_client.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/broker_http_port.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/broker_http_server.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/brokered_backend.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/builders.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/capabilities.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/client.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/client_v2.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/doctor.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/fs_health.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/get_http_endpoint_dispatch.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/host_identity.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/http_endpoint_registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/names_v2.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/manifest.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/framing.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/validate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/backend_handle.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/client_compat.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/io.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/loader.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/manifest_io.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/secure_dir.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/admin.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/broadcast.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/connection.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/control_socket.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/wire.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff_serve.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/hello_router.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/instance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/metrics.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/recovery.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/serve.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/trace_context.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/instances.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/list.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/prune.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/uninstall.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/client.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/deadline_io.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/observer.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/paths.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/pipe_session.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/pty_session.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/telemetry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/console_detect.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/containment.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/attach_stream.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/config.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/core.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/observer.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/services.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/util.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/idle.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/observer_registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/reaper.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/server.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/services.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/services_snapshot.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/shadow.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/telemetry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/helpers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/lib.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/maintenance/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/maintenance/release_handles.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/cmdline.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/descendants_linux.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/descendants_macos.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/file_handles.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/tests.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/originator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/process_tree.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/backend.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_acquire.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_api.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_sidecar_hashes.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/win_version.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/native_pty_process.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/pty_posix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/pty_windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/terminal_input.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/public_symbols.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/runpm_config.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/rust_debug.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn_imp_unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn_imp_windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/systemd_killmode.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/terminal_graphics.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/test_support/conformance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/test_support/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/tests.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/types.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/README.md +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/admin.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/builders.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/client.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/connection.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/docs_index.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/doctor.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/framing.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_serve_e2e.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_wire.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_handler.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_router.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_skip.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/idle_coord.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/instance.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/into_backend_io.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/main.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/names.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/perf_guard.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/serve.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/socket_common.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker_v2_scaffold_accepts_connection.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/brokered_backend_ui.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/common.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/main.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/common/mitm_stdin.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/common/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/containment_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/main.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_runpm_save_resurrect.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/main.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/originator_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/process_core_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_mitm_paste_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_mitm_stdin_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/runpm_boot_autostart_fixtures.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/runpm_toml_config.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/dependency_surface.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/main.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/service_name_validation.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/unsafe_inventory.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/spawn_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/ui/brokered_backend_state_in_bind.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/ui/brokered_backend_state_in_bind.stderr +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/containment.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/daemon_client.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/debug_traces.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/helpers.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/idle_detector.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/lib.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/metrics.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/originator.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pid_tracking.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/priority.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/process.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/process_tree.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pty_buffer.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pty_process.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/public_symbols.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/py_native_process.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/signal_bool.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/terminal_input.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/control_churn.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/expect_match.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/mod.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/parse_command.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/process_tree.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/pty_process.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/registry.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/Cargo.toml +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/src/lib.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/tests/hang_dump.rs +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/assets/example.txt +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/cli.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/command_render.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/compat.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/console_encoding.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/daemon.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/dashboard.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/exit_status.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/expect.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/interrupt_handler.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/launch.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/line_iterator.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/output_formatter.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/priority.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/process_utils.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/processor_cli.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/__init__.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_command.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_console_io.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_errors.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_idle_helpers.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_idle_state.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_interactive.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_process_helpers.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pseudo_terminal.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_expect.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_idle_waiter.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_input_relay.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_reader.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_wait_for.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_terminal_strip.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_types.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_wait_input.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/__init__.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_classmethod_api.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_core.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_helpers.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_iter.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_subprocess.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_types.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_wait_methods.py +0 -0
- {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process_manager.py +0 -0
|
@@ -75,9 +75,9 @@ dependencies = [
|
|
|
75
75
|
|
|
76
76
|
[[package]]
|
|
77
77
|
name = "anyhow"
|
|
78
|
-
version = "1.0.
|
|
78
|
+
version = "1.0.104"
|
|
79
79
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
80
|
-
checksum = "
|
|
80
|
+
checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
|
|
81
81
|
|
|
82
82
|
[[package]]
|
|
83
83
|
name = "arrayref"
|
|
@@ -256,9 +256,9 @@ dependencies = [
|
|
|
256
256
|
|
|
257
257
|
[[package]]
|
|
258
258
|
name = "crossbeam-epoch"
|
|
259
|
-
version = "0.9.
|
|
259
|
+
version = "0.9.20"
|
|
260
260
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
261
|
-
checksum = "
|
|
261
|
+
checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
|
|
262
262
|
dependencies = [
|
|
263
263
|
"crossbeam-utils",
|
|
264
264
|
]
|
|
@@ -1351,7 +1351,7 @@ dependencies = [
|
|
|
1351
1351
|
|
|
1352
1352
|
[[package]]
|
|
1353
1353
|
name = "running-process"
|
|
1354
|
-
version = "4.6.
|
|
1354
|
+
version = "4.6.1"
|
|
1355
1355
|
dependencies = [
|
|
1356
1356
|
"anyhow",
|
|
1357
1357
|
"blake3",
|
|
@@ -1390,7 +1390,7 @@ dependencies = [
|
|
|
1390
1390
|
|
|
1391
1391
|
[[package]]
|
|
1392
1392
|
name = "running-process-observer"
|
|
1393
|
-
version = "4.6.
|
|
1393
|
+
version = "4.6.1"
|
|
1394
1394
|
dependencies = [
|
|
1395
1395
|
"blake3",
|
|
1396
1396
|
"dirs",
|
|
@@ -1400,21 +1400,21 @@ dependencies = [
|
|
|
1400
1400
|
|
|
1401
1401
|
[[package]]
|
|
1402
1402
|
name = "running-process-observer-interposer-linux"
|
|
1403
|
-
version = "4.6.
|
|
1403
|
+
version = "4.6.1"
|
|
1404
1404
|
dependencies = [
|
|
1405
1405
|
"libc",
|
|
1406
1406
|
]
|
|
1407
1407
|
|
|
1408
1408
|
[[package]]
|
|
1409
1409
|
name = "running-process-observer-interposer-macos"
|
|
1410
|
-
version = "4.6.
|
|
1410
|
+
version = "4.6.1"
|
|
1411
1411
|
dependencies = [
|
|
1412
1412
|
"libc",
|
|
1413
1413
|
]
|
|
1414
1414
|
|
|
1415
1415
|
[[package]]
|
|
1416
1416
|
name = "running-process-observer-interposer-windows"
|
|
1417
|
-
version = "4.6.
|
|
1417
|
+
version = "4.6.1"
|
|
1418
1418
|
dependencies = [
|
|
1419
1419
|
"retour",
|
|
1420
1420
|
"windows-sys 0.59.0",
|
|
@@ -1422,7 +1422,7 @@ dependencies = [
|
|
|
1422
1422
|
|
|
1423
1423
|
[[package]]
|
|
1424
1424
|
name = "running-process-py"
|
|
1425
|
-
version = "4.6.
|
|
1425
|
+
version = "4.6.1"
|
|
1426
1426
|
dependencies = [
|
|
1427
1427
|
"interprocess",
|
|
1428
1428
|
"libc",
|
|
@@ -1436,7 +1436,7 @@ dependencies = [
|
|
|
1436
1436
|
|
|
1437
1437
|
[[package]]
|
|
1438
1438
|
name = "running-process-win-gnu-bridge"
|
|
1439
|
-
version = "4.6.
|
|
1439
|
+
version = "4.6.1"
|
|
1440
1440
|
dependencies = [
|
|
1441
1441
|
"windows-sys 0.59.0",
|
|
1442
1442
|
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# running-process — crate source
|
|
2
|
+
|
|
3
|
+
Top-level modules of the published `running-process` crate. Feature gating is
|
|
4
|
+
described in the repo-root `CLAUDE.md` ("Rust workspace" section).
|
|
5
|
+
|
|
6
|
+
- `lib.rs` / `public_symbols.rs` — crate surface and re-exports
|
|
7
|
+
- `environment.rs` — user baseline environment (Windows `CreateEnvironmentBlock`, Unix snapshot)
|
|
8
|
+
- `spawn.rs`, `spawn_imp_unix.rs`, `spawn_imp_windows.rs` — process spawn implementations
|
|
9
|
+
- `process_tree.rs` — process-tree enumeration and tree kill
|
|
10
|
+
- `containment.rs` — Job Objects / process-group containment
|
|
11
|
+
- `console_detect.rs`, `terminal_graphics.rs`, `pty/` — console + PTY support
|
|
12
|
+
- `client/`, `daemon/`, `broker/`, `observer/` — IPC client, daemon runtime, broker tiers, observer sidecar
|
|
13
|
+
- `bin/` — `runpm`, `daemon`, `trampoline`, broker + cleanup binaries
|
|
14
|
+
- `boot_autostart/`, `maintenance/`, `cleanup/` — lifecycle helpers
|
|
15
|
+
- `originator.rs`, `runpm_config.rs`, `systemd_killmode.rs`, `unix.rs`, `windows.rs`, `helpers.rs`, `types.rs` — platform + config plumbing
|
|
16
|
+
- `test_support/`, `tests.rs`, `rust_debug.rs` — test-only support
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
//! Process environment baselines.
|
|
2
|
+
//!
|
|
3
|
+
//! Windows exposes the logged-in user's machine + user environment through
|
|
4
|
+
//! `CreateEnvironmentBlock`. Unix has no OS API that reconstructs a login
|
|
5
|
+
//! environment, so the baseline is rebuilt from the user's identity:
|
|
6
|
+
//! `getpwuid_r` supplies `USER`/`LOGNAME`/`HOME`/`SHELL`, `PATH` gets the
|
|
7
|
+
//! platform's login default, and locale/timezone/tmpdir variables are
|
|
8
|
+
//! carried over from the current process when present.
|
|
9
|
+
|
|
10
|
+
#[cfg(windows)]
|
|
11
|
+
use std::ffi::c_void;
|
|
12
|
+
use std::ffi::OsString;
|
|
13
|
+
use std::io;
|
|
14
|
+
|
|
15
|
+
/// Return the logged-in user's baseline environment.
|
|
16
|
+
///
|
|
17
|
+
/// On Windows this is freshly constructed from machine and user settings via
|
|
18
|
+
/// `CreateEnvironmentBlock` and therefore excludes variables that exist only
|
|
19
|
+
/// in the current process. On Unix it is reconstructed from the user's
|
|
20
|
+
/// identity (`getpwuid_r`): `USER`, `LOGNAME`, `HOME`, `SHELL`, a platform
|
|
21
|
+
/// default `PATH`, plus locale (`LANG`, `LC_*`), `TZ`, and `TMPDIR` carried
|
|
22
|
+
/// over from the current process when set. Non-Windows targets without a
|
|
23
|
+
/// resolvable passwd entry fall back to the current process environment.
|
|
24
|
+
pub fn user_baseline_environment() -> io::Result<Vec<(OsString, OsString)>> {
|
|
25
|
+
#[cfg(windows)]
|
|
26
|
+
{
|
|
27
|
+
let block = user_baseline_environment_block()?;
|
|
28
|
+
Ok(parse_windows_environment_block(&block))
|
|
29
|
+
}
|
|
30
|
+
#[cfg(unix)]
|
|
31
|
+
{
|
|
32
|
+
Ok(unix_login_baseline_environment().unwrap_or_else(|| std::env::vars_os().collect()))
|
|
33
|
+
}
|
|
34
|
+
#[cfg(not(any(windows, unix)))]
|
|
35
|
+
{
|
|
36
|
+
Ok(std::env::vars_os().collect())
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// The `PATH` a fresh login would start from. Matches `/etc/paths` order on
|
|
41
|
+
/// macOS and the customary `login(1)` default elsewhere.
|
|
42
|
+
#[cfg(unix)]
|
|
43
|
+
const UNIX_LOGIN_DEFAULT_PATH: &str = if cfg!(target_os = "macos") {
|
|
44
|
+
"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
45
|
+
} else {
|
|
46
|
+
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/// Build a clean login environment from the user's identity instead of the
|
|
50
|
+
/// current process environment. Returns `None` when the passwd entry cannot
|
|
51
|
+
/// be resolved (e.g. UID absent from NSS) so the caller can fall back.
|
|
52
|
+
#[cfg(unix)]
|
|
53
|
+
fn unix_login_baseline_environment() -> Option<Vec<(OsString, OsString)>> {
|
|
54
|
+
use std::ffi::CStr;
|
|
55
|
+
use std::os::unix::ffi::OsStringExt;
|
|
56
|
+
|
|
57
|
+
let mut passwd: libc::passwd = unsafe { std::mem::zeroed() };
|
|
58
|
+
let mut result: *mut libc::passwd = std::ptr::null_mut();
|
|
59
|
+
// sysconf(_SC_GETPW_R_SIZE_MAX) is allowed to return -1 ("no limit");
|
|
60
|
+
// 1 KiB covers real-world passwd entries and getpwuid_r reports ERANGE
|
|
61
|
+
// if it does not, in which case we grow and retry.
|
|
62
|
+
let mut buf = vec![0u8; 1024];
|
|
63
|
+
loop {
|
|
64
|
+
let rc = unsafe {
|
|
65
|
+
libc::getpwuid_r(
|
|
66
|
+
libc::getuid(),
|
|
67
|
+
&mut passwd,
|
|
68
|
+
buf.as_mut_ptr().cast(),
|
|
69
|
+
buf.len(),
|
|
70
|
+
&mut result,
|
|
71
|
+
)
|
|
72
|
+
};
|
|
73
|
+
if rc == libc::ERANGE && buf.len() < 1 << 20 {
|
|
74
|
+
buf.resize(buf.len() * 2, 0);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if rc != 0 || result.is_null() {
|
|
78
|
+
return None;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
let field = |ptr: *const libc::c_char| -> Option<OsString> {
|
|
84
|
+
if ptr.is_null() {
|
|
85
|
+
return None;
|
|
86
|
+
}
|
|
87
|
+
let bytes = unsafe { CStr::from_ptr(ptr) }.to_bytes();
|
|
88
|
+
(!bytes.is_empty()).then(|| OsString::from_vec(bytes.to_vec()))
|
|
89
|
+
};
|
|
90
|
+
let name = field(passwd.pw_name)?;
|
|
91
|
+
let home = field(passwd.pw_dir)?;
|
|
92
|
+
|
|
93
|
+
let mut env: Vec<(OsString, OsString)> = vec![
|
|
94
|
+
(OsString::from("USER"), name.clone()),
|
|
95
|
+
(OsString::from("LOGNAME"), name),
|
|
96
|
+
(OsString::from("HOME"), home),
|
|
97
|
+
(
|
|
98
|
+
OsString::from("PATH"),
|
|
99
|
+
OsString::from(UNIX_LOGIN_DEFAULT_PATH),
|
|
100
|
+
),
|
|
101
|
+
];
|
|
102
|
+
if let Some(shell) = field(passwd.pw_shell) {
|
|
103
|
+
env.push((OsString::from("SHELL"), shell));
|
|
104
|
+
}
|
|
105
|
+
// Locale, timezone, and per-user tmpdir describe the session rather
|
|
106
|
+
// than the parent process; carry them over when present so children
|
|
107
|
+
// keep rendering text and resolving paths the way the user expects.
|
|
108
|
+
for (key, value) in std::env::vars_os() {
|
|
109
|
+
let carry = key == "LANG" || key == "TZ" || key == "TMPDIR" || {
|
|
110
|
+
key.to_str().is_some_and(|k| k.starts_with("LC_"))
|
|
111
|
+
};
|
|
112
|
+
if carry {
|
|
113
|
+
env.push((key, value));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
Some(env)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/// Return a CreateProcessW-compatible Unicode user environment block.
|
|
120
|
+
///
|
|
121
|
+
/// The returned buffer is sorted and double-NUL terminated by Windows. It is
|
|
122
|
+
/// useful to callers that own a manual `CreateProcessW` path.
|
|
123
|
+
#[cfg(windows)]
|
|
124
|
+
pub fn user_baseline_environment_block() -> io::Result<Vec<u16>> {
|
|
125
|
+
use windows_sys::Win32::Foundation::CloseHandle;
|
|
126
|
+
use windows_sys::Win32::Security::{TOKEN_DUPLICATE, TOKEN_IMPERSONATE, TOKEN_QUERY};
|
|
127
|
+
use windows_sys::Win32::System::Environment::{
|
|
128
|
+
CreateEnvironmentBlock, DestroyEnvironmentBlock,
|
|
129
|
+
};
|
|
130
|
+
use windows_sys::Win32::System::Threading::{GetCurrentProcess, OpenProcessToken};
|
|
131
|
+
|
|
132
|
+
// CreateEnvironmentBlock documents that the token needs TOKEN_QUERY,
|
|
133
|
+
// TOKEN_DUPLICATE, and TOKEN_IMPERSONATE. With TOKEN_QUERY alone the
|
|
134
|
+
// call still *succeeds* but silently omits the per-user dynamic
|
|
135
|
+
// variables (USERNAME, USERDOMAIN) — downstream consumers that key
|
|
136
|
+
// behavior on USERNAME (e.g. soldr's daemon pipe name) then diverge
|
|
137
|
+
// from processes holding the real login environment.
|
|
138
|
+
let mut token = std::ptr::null_mut();
|
|
139
|
+
let opened = unsafe {
|
|
140
|
+
OpenProcessToken(
|
|
141
|
+
GetCurrentProcess(),
|
|
142
|
+
TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE,
|
|
143
|
+
&mut token,
|
|
144
|
+
)
|
|
145
|
+
};
|
|
146
|
+
if opened == 0 {
|
|
147
|
+
return Err(io::Error::last_os_error());
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
let mut raw_block: *mut c_void = std::ptr::null_mut();
|
|
151
|
+
let created = unsafe { CreateEnvironmentBlock(&mut raw_block, token, 0) };
|
|
152
|
+
let create_error = if created == 0 {
|
|
153
|
+
Some(io::Error::last_os_error())
|
|
154
|
+
} else {
|
|
155
|
+
None
|
|
156
|
+
};
|
|
157
|
+
unsafe {
|
|
158
|
+
CloseHandle(token);
|
|
159
|
+
}
|
|
160
|
+
if let Some(error) = create_error {
|
|
161
|
+
return Err(error);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
let copied = unsafe { copy_windows_environment_block(raw_block.cast::<u16>()) };
|
|
165
|
+
unsafe {
|
|
166
|
+
DestroyEnvironmentBlock(raw_block);
|
|
167
|
+
}
|
|
168
|
+
Ok(copied)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
#[cfg(windows)]
|
|
172
|
+
unsafe fn copy_windows_environment_block(cursor: *const u16) -> Vec<u16> {
|
|
173
|
+
let mut len = 0usize;
|
|
174
|
+
loop {
|
|
175
|
+
if *cursor.add(len) == 0 && *cursor.add(len + 1) == 0 {
|
|
176
|
+
len += 2;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
len += 1;
|
|
180
|
+
}
|
|
181
|
+
std::slice::from_raw_parts(cursor, len).to_vec()
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
#[cfg(windows)]
|
|
185
|
+
fn parse_windows_environment_block(block: &[u16]) -> Vec<(OsString, OsString)> {
|
|
186
|
+
use std::os::windows::ffi::OsStringExt;
|
|
187
|
+
|
|
188
|
+
let mut env = Vec::new();
|
|
189
|
+
let mut offset = 0usize;
|
|
190
|
+
while offset < block.len() && block[offset] != 0 {
|
|
191
|
+
let Some(relative_end) = block[offset..].iter().position(|value| *value == 0) else {
|
|
192
|
+
break;
|
|
193
|
+
};
|
|
194
|
+
let end = offset + relative_end;
|
|
195
|
+
let entry = &block[offset..end];
|
|
196
|
+
// Drive-current-directory pseudo variables have the shape
|
|
197
|
+
// `=C:=C:\path`; skip index zero so their second '=' is the
|
|
198
|
+
// key/value separator.
|
|
199
|
+
if let Some(separator) = entry
|
|
200
|
+
.iter()
|
|
201
|
+
.enumerate()
|
|
202
|
+
.skip(1)
|
|
203
|
+
.find_map(|(index, value)| (*value == b'=' as u16).then_some(index))
|
|
204
|
+
{
|
|
205
|
+
let key = OsString::from_wide(&entry[..separator]);
|
|
206
|
+
let value = OsString::from_wide(&entry[separator + 1..]);
|
|
207
|
+
env.push((key, value));
|
|
208
|
+
}
|
|
209
|
+
offset = end + 1;
|
|
210
|
+
}
|
|
211
|
+
env
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
#[cfg(all(test, unix))]
|
|
215
|
+
mod unix_tests {
|
|
216
|
+
use super::*;
|
|
217
|
+
|
|
218
|
+
#[test]
|
|
219
|
+
fn login_baseline_contains_identity_and_default_path() {
|
|
220
|
+
let env = user_baseline_environment().unwrap();
|
|
221
|
+
let get = |name: &str| {
|
|
222
|
+
env.iter()
|
|
223
|
+
.find(|(key, _)| key == name)
|
|
224
|
+
.map(|(_, value)| value.clone())
|
|
225
|
+
};
|
|
226
|
+
let user = get("USER").expect("baseline must contain USER");
|
|
227
|
+
assert!(!user.is_empty());
|
|
228
|
+
assert_eq!(get("LOGNAME").as_ref(), Some(&user));
|
|
229
|
+
let home = get("HOME").expect("baseline must contain HOME");
|
|
230
|
+
assert!(!home.is_empty());
|
|
231
|
+
let path = get("PATH").expect("baseline must contain PATH");
|
|
232
|
+
assert!(!path.is_empty());
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
#[test]
|
|
236
|
+
fn login_baseline_does_not_leak_arbitrary_process_vars() {
|
|
237
|
+
// A variable that only exists in this process must not survive
|
|
238
|
+
// into the login baseline (that's what Inherit is for).
|
|
239
|
+
std::env::set_var("RUNNING_PROCESS_BASELINE_CANARY", "1");
|
|
240
|
+
let env = unix_login_baseline_environment().expect("test user must have a passwd entry");
|
|
241
|
+
assert!(
|
|
242
|
+
!env.iter()
|
|
243
|
+
.any(|(key, _)| key == "RUNNING_PROCESS_BASELINE_CANARY"),
|
|
244
|
+
"process-local variables must not leak into the login baseline"
|
|
245
|
+
);
|
|
246
|
+
std::env::remove_var("RUNNING_PROCESS_BASELINE_CANARY");
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
#[cfg(all(test, windows))]
|
|
251
|
+
mod tests {
|
|
252
|
+
use super::*;
|
|
253
|
+
use std::ffi::OsStr;
|
|
254
|
+
use std::os::windows::ffi::OsStrExt;
|
|
255
|
+
|
|
256
|
+
#[test]
|
|
257
|
+
fn parser_preserves_drive_current_directory_entries() {
|
|
258
|
+
let block: Vec<u16> = OsStr::new("=C:=C:\\work")
|
|
259
|
+
.encode_wide()
|
|
260
|
+
.chain(std::iter::once(0))
|
|
261
|
+
.chain(OsStr::new("Path=C:\\Windows").encode_wide())
|
|
262
|
+
.chain(std::iter::once(0))
|
|
263
|
+
.chain(std::iter::once(0))
|
|
264
|
+
.collect();
|
|
265
|
+
assert_eq!(
|
|
266
|
+
parse_windows_environment_block(&block),
|
|
267
|
+
vec![
|
|
268
|
+
(OsString::from("=C:"), OsString::from("C:\\work")),
|
|
269
|
+
(OsString::from("Path"), OsString::from("C:\\Windows")),
|
|
270
|
+
]
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
#[test]
|
|
275
|
+
fn live_user_baseline_is_double_nul_terminated() {
|
|
276
|
+
let block = user_baseline_environment_block().unwrap();
|
|
277
|
+
assert!(block.len() >= 2);
|
|
278
|
+
assert_eq!(&block[block.len() - 2..], &[0, 0]);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/// Regression: with TOKEN_QUERY-only access, CreateEnvironmentBlock
|
|
282
|
+
/// succeeds but silently drops the per-user dynamic variables. The
|
|
283
|
+
/// baseline must contain USERNAME (and it must match the live value
|
|
284
|
+
/// when the current process has one).
|
|
285
|
+
#[test]
|
|
286
|
+
fn live_user_baseline_contains_username() {
|
|
287
|
+
let env = user_baseline_environment().unwrap();
|
|
288
|
+
let username = env
|
|
289
|
+
.iter()
|
|
290
|
+
.find(|(key, _)| key.eq_ignore_ascii_case("USERNAME"))
|
|
291
|
+
.map(|(_, value)| value.clone());
|
|
292
|
+
let username = username.expect("baseline environment must contain USERNAME");
|
|
293
|
+
assert!(!username.is_empty(), "USERNAME must be non-empty");
|
|
294
|
+
if let Ok(live) = std::env::var("USERNAME") {
|
|
295
|
+
assert_eq!(
|
|
296
|
+
username.to_string_lossy(),
|
|
297
|
+
live,
|
|
298
|
+
"baseline USERNAME must match the live login USERNAME"
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
@@ -48,8 +48,11 @@ pub enum EnvironmentPolicy {
|
|
|
48
48
|
Inherit,
|
|
49
49
|
/// Start from the logged-in user's machine + user environment.
|
|
50
50
|
///
|
|
51
|
-
/// Windows implements this with `CreateEnvironmentBlock`. Unix
|
|
52
|
-
///
|
|
51
|
+
/// Windows implements this with `CreateEnvironmentBlock`. Unix
|
|
52
|
+
/// reconstructs a clean login environment from the user's identity
|
|
53
|
+
/// (`getpwuid_r` → `USER`/`LOGNAME`/`HOME`/`SHELL`, platform default
|
|
54
|
+
/// `PATH`, carried-over locale/`TZ`/`TMPDIR`), falling back to
|
|
55
|
+
/// inheritance only when the passwd entry cannot be resolved.
|
|
53
56
|
UserBaseline,
|
|
54
57
|
/// Start from an empty environment.
|
|
55
58
|
Clear,
|
|
@@ -20,7 +20,7 @@ crate-type = ["cdylib", "lib"]
|
|
|
20
20
|
libc = "0.2"
|
|
21
21
|
pyo3 = { workspace = true }
|
|
22
22
|
regex = "1"
|
|
23
|
-
running-process = { path = "../running-process", version = "4.6.
|
|
23
|
+
running-process = { path = "../running-process", version = "4.6.1", features = ["client", "originator-scan"] }
|
|
24
24
|
sysinfo = "0.30"
|
|
25
25
|
winapi = { version = "0.3", features = ["consoleapi", "handleapi", "jobapi2", "processenv", "processthreadsapi", "synchapi", "winbase", "wincon", "winnt", "winuser"] }
|
|
26
26
|
prost = "0.14"
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
//! Process environment baselines.
|
|
2
|
-
//!
|
|
3
|
-
//! Windows exposes the logged-in user's machine + user environment through
|
|
4
|
-
//! `CreateEnvironmentBlock`. Unix has no equivalent stable OS API, so the
|
|
5
|
-
//! conservative fallback is a snapshot of the current process environment.
|
|
6
|
-
|
|
7
|
-
#[cfg(windows)]
|
|
8
|
-
use std::ffi::c_void;
|
|
9
|
-
use std::ffi::OsString;
|
|
10
|
-
use std::io;
|
|
11
|
-
|
|
12
|
-
/// Return the logged-in user's baseline environment.
|
|
13
|
-
///
|
|
14
|
-
/// On Windows this is freshly constructed from machine and user settings and
|
|
15
|
-
/// therefore excludes variables that exist only in the current process. On
|
|
16
|
-
/// Unix this currently falls back to the current process environment.
|
|
17
|
-
pub fn user_baseline_environment() -> io::Result<Vec<(OsString, OsString)>> {
|
|
18
|
-
#[cfg(windows)]
|
|
19
|
-
{
|
|
20
|
-
let block = user_baseline_environment_block()?;
|
|
21
|
-
Ok(parse_windows_environment_block(&block))
|
|
22
|
-
}
|
|
23
|
-
#[cfg(not(windows))]
|
|
24
|
-
{
|
|
25
|
-
Ok(std::env::vars_os().collect())
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/// Return a CreateProcessW-compatible Unicode user environment block.
|
|
30
|
-
///
|
|
31
|
-
/// The returned buffer is sorted and double-NUL terminated by Windows. It is
|
|
32
|
-
/// useful to callers that own a manual `CreateProcessW` path.
|
|
33
|
-
#[cfg(windows)]
|
|
34
|
-
pub fn user_baseline_environment_block() -> io::Result<Vec<u16>> {
|
|
35
|
-
use windows_sys::Win32::Foundation::CloseHandle;
|
|
36
|
-
use windows_sys::Win32::Security::TOKEN_QUERY;
|
|
37
|
-
use windows_sys::Win32::System::Environment::{
|
|
38
|
-
CreateEnvironmentBlock, DestroyEnvironmentBlock,
|
|
39
|
-
};
|
|
40
|
-
use windows_sys::Win32::System::Threading::{GetCurrentProcess, OpenProcessToken};
|
|
41
|
-
|
|
42
|
-
let mut token = std::ptr::null_mut();
|
|
43
|
-
let opened = unsafe { OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &mut token) };
|
|
44
|
-
if opened == 0 {
|
|
45
|
-
return Err(io::Error::last_os_error());
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
let mut raw_block: *mut c_void = std::ptr::null_mut();
|
|
49
|
-
let created = unsafe { CreateEnvironmentBlock(&mut raw_block, token, 0) };
|
|
50
|
-
let create_error = if created == 0 {
|
|
51
|
-
Some(io::Error::last_os_error())
|
|
52
|
-
} else {
|
|
53
|
-
None
|
|
54
|
-
};
|
|
55
|
-
unsafe {
|
|
56
|
-
CloseHandle(token);
|
|
57
|
-
}
|
|
58
|
-
if let Some(error) = create_error {
|
|
59
|
-
return Err(error);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
let copied = unsafe { copy_windows_environment_block(raw_block.cast::<u16>()) };
|
|
63
|
-
unsafe {
|
|
64
|
-
DestroyEnvironmentBlock(raw_block);
|
|
65
|
-
}
|
|
66
|
-
Ok(copied)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
#[cfg(windows)]
|
|
70
|
-
unsafe fn copy_windows_environment_block(cursor: *const u16) -> Vec<u16> {
|
|
71
|
-
let mut len = 0usize;
|
|
72
|
-
loop {
|
|
73
|
-
if *cursor.add(len) == 0 && *cursor.add(len + 1) == 0 {
|
|
74
|
-
len += 2;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
len += 1;
|
|
78
|
-
}
|
|
79
|
-
std::slice::from_raw_parts(cursor, len).to_vec()
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
#[cfg(windows)]
|
|
83
|
-
fn parse_windows_environment_block(block: &[u16]) -> Vec<(OsString, OsString)> {
|
|
84
|
-
use std::os::windows::ffi::OsStringExt;
|
|
85
|
-
|
|
86
|
-
let mut env = Vec::new();
|
|
87
|
-
let mut offset = 0usize;
|
|
88
|
-
while offset < block.len() && block[offset] != 0 {
|
|
89
|
-
let Some(relative_end) = block[offset..].iter().position(|value| *value == 0) else {
|
|
90
|
-
break;
|
|
91
|
-
};
|
|
92
|
-
let end = offset + relative_end;
|
|
93
|
-
let entry = &block[offset..end];
|
|
94
|
-
// Drive-current-directory pseudo variables have the shape
|
|
95
|
-
// `=C:=C:\path`; skip index zero so their second '=' is the
|
|
96
|
-
// key/value separator.
|
|
97
|
-
if let Some(separator) = entry
|
|
98
|
-
.iter()
|
|
99
|
-
.enumerate()
|
|
100
|
-
.skip(1)
|
|
101
|
-
.find_map(|(index, value)| (*value == b'=' as u16).then_some(index))
|
|
102
|
-
{
|
|
103
|
-
let key = OsString::from_wide(&entry[..separator]);
|
|
104
|
-
let value = OsString::from_wide(&entry[separator + 1..]);
|
|
105
|
-
env.push((key, value));
|
|
106
|
-
}
|
|
107
|
-
offset = end + 1;
|
|
108
|
-
}
|
|
109
|
-
env
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
#[cfg(all(test, windows))]
|
|
113
|
-
mod tests {
|
|
114
|
-
use super::*;
|
|
115
|
-
use std::ffi::OsStr;
|
|
116
|
-
use std::os::windows::ffi::OsStrExt;
|
|
117
|
-
|
|
118
|
-
#[test]
|
|
119
|
-
fn parser_preserves_drive_current_directory_entries() {
|
|
120
|
-
let block: Vec<u16> = OsStr::new("=C:=C:\\work")
|
|
121
|
-
.encode_wide()
|
|
122
|
-
.chain(std::iter::once(0))
|
|
123
|
-
.chain(OsStr::new("Path=C:\\Windows").encode_wide())
|
|
124
|
-
.chain(std::iter::once(0))
|
|
125
|
-
.chain(std::iter::once(0))
|
|
126
|
-
.collect();
|
|
127
|
-
assert_eq!(
|
|
128
|
-
parse_windows_environment_block(&block),
|
|
129
|
-
vec![
|
|
130
|
-
(OsString::from("=C:"), OsString::from("C:\\work")),
|
|
131
|
-
(OsString::from("Path"), OsString::from("C:\\Windows")),
|
|
132
|
-
]
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
#[test]
|
|
137
|
-
fn live_user_baseline_is_double_nul_terminated() {
|
|
138
|
-
let block = user_baseline_environment_block().unwrap();
|
|
139
|
-
assert!(block.len() >= 2);
|
|
140
|
-
assert_eq!(&block[block.len() - 2..], &[0, 0]);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/buf.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/trampoline.rs
RENAMED
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/linux.rs
RENAMED
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/macos.rs
RENAMED
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/mod.rs
RENAMED
|
File without changes
|
{running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/windows.rs
RENAMED
|
File without changes
|