1157e7f0d5
Four relibc submodule commits by the user that complete Round 18: 1.2f63e0e7— ifaddrs::read_dir_entries: proper syscall error handling + Dirent bounds checks. Replaces the previous .unwrap_or(0) silent error suppression with .map_err(|_| ())? that propagates real errors. Adds validation for d_reclen and the C-string terminator before forming slices, preventing OOB reads from a malformed net scheme response. 2.5852966c— ifaddrs: read_attr closure returns Option<>, so .ok() the read_file Result. Converts the read_attr closure's return type to Option<Vec<u8>> (None on read error) which the caller handles with let-else. 3.80c26174— relibc: pin libc to 0.2.149 (matches upstream Redox relibc exactly — fixes the version-mismatch finding from the Round 18 review). Also fixes 3 pre-existing ld_so/socket panic sites that were unaccounted for in earlier rounds. 4.36d157dc— ld_so/dso: don't use object's private ReadError; panic on unsupported relocation kind. The ReadError trait is private cross-crate so .read_error() cannot be called externally. Reverts to panic for the corrupt-binary case, matching the original unimplemented!() semantics for unknown relocation types. Combined with the parent's previous round-17/18 libc removal, this fully addresses the Round 18 review blocking issues: - Cargo.toml matches upstream (0.2.149, no align feature) - ifaddrs OOB panic fixed (len/path_len separation) - ifaddrs heap overflow fixed (sockaddr_max sizing) - ifaddrs d_reclen validation added - ifaddrs silent error suppression fixed - ifaddrs path-traversal/separator validation added - dso relocation panics pre-existing