MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / remove_stale_socket

Function remove_stale_socket

crates/openshell-driver-vm/src/main.rs:344–373  ·  view source on GitHub ↗
(socket_path: &Path, expected_uid: u32)

Source from the content-addressed store, hash-verified

342}
343
344fn remove_stale_socket(socket_path: &Path, expected_uid: u32) -> std::result::Result<(), String> {
345 let metadata = match std::fs::symlink_metadata(socket_path) {
346 Ok(metadata) => metadata,
347 Err(err) if err.kind() == io::ErrorKind::NotFound => return Ok(()),
348 Err(err) => return Err(format!("stat socket {}: {err}", socket_path.display())),
349 };
350 let file_type = metadata.file_type();
351 if file_type.is_symlink() {
352 return Err(format!(
353 "socket {} is a symlink; refusing to remove it",
354 socket_path.display()
355 ));
356 }
357 if metadata.uid() != expected_uid {
358 return Err(format!(
359 "socket {} is owned by uid {} but current euid is {}",
360 socket_path.display(),
361 metadata.uid(),
362 expected_uid
363 ));
364 }
365 if !file_type.is_socket() {
366 return Err(format!(
367 "socket path {} exists but is not a Unix socket",
368 socket_path.display()
369 ));
370 }
371 std::fs::remove_file(socket_path)
372 .map_err(|err| format!("remove stale socket {}: {err}", socket_path.display()))
373}
374
375fn restrict_socket_permissions(socket_path: &Path) -> std::result::Result<(), String> {
376 std::fs::set_permissions(socket_path, std::fs::Permissions::from_mode(0o600))

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected