bytecodealliance / bytecodealliance/wasmtime

WASIp3 HTTP: Inconsistent errors when adding invalid field names

Open
#11,771 2 comments 0 reactions 0 assignees View on GitHub
bug wasi:impl
Dominant language
Rust
Stars
18.6k
Forks
1.8k
Avg merge
1d 19h
Merged PRs (30d)
121

Description

Consider this test for what the HTTP implementation does with invalid field names. First it tries a field name with a space in it, then it tries `"`. Both of these are [invalid](https://www.rfc-editor.org/rfc/rfc9110.html#section-5.6.2), but the first shows an error on `fields.delete` whereas the second does not:

```rust
extern crate wit_bindgen;

wit_bindgen::generate!({
inline: r"
package test:test;

world test {
include wasi:http/imports@0.3.0-rc-2025-09-16;
}
",
additional_derives: [PartialEq, Eq, Hash, Clone],
features:["clocks-timezone"],
generate_all
});

use wasi::http::types::Fields;
use wasi::http::types::HeaderError;

fn test_invalid_field_name(field: &str) {
println!("testing field: {}", field);
let fields = Fields::new();
assert!(!fields.has(field));
assert_eq!(fields.delete(field),
Err(HeaderError::InvalidSyntax));
}

fn test_invalid_field_names() {
test_invalid_field_name("field with space");
test_invalid_field_name("\"");
}

fn main() {
test_invalid_field_names();
}
```

Run it:

```
$ cargo +nightly build --target=wasm32-wasip2 --release && wasmtime -Wcomponent-model-async -Sp3,http target/wasm32-wasip2/release/field-invalid.wasm
Compiling test-wasm32-wasip3 v0.1.0 (/home/wingo/src/wasip3/wasi-testsuite/tests/rust/wasm32-wasip3)
Finished `release` profile [optimized] target(s) in 0.35s
testing field: field with space
testing field: "

thread 'main' (1) panicked at src/bin/field-invalid.rs:23:5:
assertion `left == right` failed
left: Ok(())
right: Err(HeaderError::InvalidSyntax)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.