mirror of
https://github.com/openai/codex.git
synced 2026-09-20 12:47:38 +00:00
Validate network socket policies using the executor OS (#46302)
## Why A controller and its executor can run different operating systems. Validating socket paths against the controller's OS can reject absolute paths that are valid on the executor, such as Windows paths on a Linux controller. ## What changed - Thread `NetworkProxyExecutorOs` through network policy validation, proxy construction, and policy updates. - Require allowed socket paths to be NUL-free and absolute for the executor OS, while preserving deny entries unchanged. - Accept either Unix or Windows absolute syntax when executor metadata omits the OS, then validate against the executor's own OS at launch. - Keep native path normalization and socket support checks at execution time. ## Testing Add coverage for cross-platform absolute path syntax, invalid allow entries, preserved deny entries, and remote policy round trips that retain executor semantics through domain edits and proxy construction. GitOrigin-RevId: 1ebc09cbce7138f60ec5fd62875591a3df52d067
This commit is contained in:
@@ -1819,6 +1819,9 @@ mod tests {
|
||||
.expect("build remote network proxy config");
|
||||
let state = NetworkProxyState::from_remote_launch_config(
|
||||
RemoteNetworkProxyLaunchConfig::new(proxy_config),
|
||||
codex_network_proxy::NetworkProxyExecutorOs::from_platform_os(Some(
|
||||
std::env::consts::OS,
|
||||
)),
|
||||
)
|
||||
.expect("build network proxy state");
|
||||
let proxy = NetworkProxy::builder()
|
||||
|
||||
@@ -348,8 +348,11 @@ async fn prepare_managed_network(
|
||||
let Some(network_proxy) = network_proxy.cloned() else {
|
||||
return Ok((env, managed_network.cloned(), None, None));
|
||||
};
|
||||
let mut state = NetworkProxyState::from_remote_launch_config(network_proxy)
|
||||
.map_err(|err| invalid_params(format!("invalid network proxy config: {err}")))?;
|
||||
let mut state = NetworkProxyState::from_remote_launch_config(
|
||||
network_proxy,
|
||||
codex_network_proxy::NetworkProxyExecutorOs::from_platform_os(Some(std::env::consts::OS)),
|
||||
)
|
||||
.map_err(|err| invalid_params(format!("invalid network proxy config: {err}")))?;
|
||||
if let Some(observer) = network_policy_audit_observer {
|
||||
state.set_policy_audit_observer(observer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user