zed-industries/zed · error · std::io::Error

path must be shorter than SUN_LEN

Error message

path must be shorter than SUN_LEN

What it means

Raised in sockaddr_un() (Windows AF_UNIX): the Unix-socket path is at least as long as the sun_path buffer, so it cannot be represented in a sockaddr_un and the bind/connect fails with this input error.

Source

Thrown at crates/net/src/util.rs:41

// https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
pub(crate) fn sockaddr_un<P: AsRef<Path>>(path: P) -> Result<(SOCKADDR_UN, usize)> {
    let mut addr = SOCKADDR_UN::default();
    addr.sun_family = ADDRESS_FAMILY(AF_UNIX);

    let bytes = path
        .as_ref()
        .to_str()
        .map(|s| s.as_bytes())
        .ok_or(ErrorKind::InvalidInput)?;

    if bytes.contains(&0) {
        return Err(Error::new(
            ErrorKind::InvalidInput,
            "paths may not contain interior null bytes",
        ));
    }
    if bytes.len() >= addr.sun_path.len() {
        return Err(Error::new(
            ErrorKind::InvalidInput,
            "path must be shorter than SUN_LEN",
        ));
    }

    unsafe {
        std::ptr::copy_nonoverlapping(
            bytes.as_ptr(),
            addr.sun_path.as_mut_ptr().cast(),
            bytes.len(),
        );
    }

    let mut len = sun_path_offset(&addr) + bytes.len();
    match bytes.first() {
        Some(&0) | None => {}
        Some(_) => len += 1,
    }

View on GitHub (pinned to f4178619ac)

Solutions

  1. Shorten the socket path (e.g. use a shorter temp directory or socket name)
  2. Hash or truncate long identifiers when composing the socket filename
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/net/src/util.rs:41 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/7c2a0fe4f2e94641. Report an issue: GitHub.