diff options
author | Luca Casonato <hello@lcas.dev> | 2021-11-10 16:48:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-10 16:48:46 +0100 |
commit | 6af916c3f4842451eb7560c20f696e0f8c77da8a (patch) | |
tree | c3b0d07af68d6b59af57de0706f905608656d4db /serde_v8 | |
parent | 0cb81951aff530b28b5ded8bd57cf34922b93ac6 (diff) |
fix: non ascii buffer response in http server (#12728)
Diffstat (limited to 'serde_v8')
-rw-r--r-- | serde_v8/Cargo.toml | 1 | ||||
-rw-r--r-- | serde_v8/src/magic/string_or_buffer.rs | 3 | ||||
-rw-r--r-- | serde_v8/tests/de.rs | 10 |
3 files changed, 13 insertions, 1 deletions
diff --git a/serde_v8/Cargo.toml b/serde_v8/Cargo.toml index c425bed22..1d4c7bd9e 100644 --- a/serde_v8/Cargo.toml +++ b/serde_v8/Cargo.toml @@ -11,6 +11,7 @@ description = "Rust to V8 serialization and deserialization" [dependencies] serde = { version = "1.0.130", features = ["derive"] } +serde_bytes = "0.11" v8 = "0.34.0" [dev-dependencies] diff --git a/serde_v8/src/magic/string_or_buffer.rs b/serde_v8/src/magic/string_or_buffer.rs index 4518fe082..edde2adcd 100644 --- a/serde_v8/src/magic/string_or_buffer.rs +++ b/serde_v8/src/magic/string_or_buffer.rs @@ -30,8 +30,9 @@ impl<'de> serde::Deserialize<'de> for StringOrBuffer { #[derive(serde::Deserialize)] #[serde(untagged)] enum StringOrBufferInner { - String(String), + #[serde(with = "serde_bytes")] Buffer(Vec<u8>), + String(String), } impl StringOrBufferInner { diff --git a/serde_v8/tests/de.rs b/serde_v8/tests/de.rs index 366d6d2b5..fee532518 100644 --- a/serde_v8/tests/de.rs +++ b/serde_v8/tests/de.rs @@ -173,6 +173,16 @@ fn de_string_or_buffer() { assert_eq!(sob.as_slice(), &[0x68, 0x65, 0x6C, 0x6C, 0x6F]); }); + dedo("new Uint8Array([97])", |scope, v| { + let sob: serde_v8::StringOrBuffer = serde_v8::from_v8(scope, v).unwrap(); + assert_eq!(sob.as_slice(), &[97]); + }); + + dedo("new Uint8Array([128])", |scope, v| { + let sob: serde_v8::StringOrBuffer = serde_v8::from_v8(scope, v).unwrap(); + assert_eq!(sob.as_slice(), &[128]); + }); + dedo( "(Uint8Array.from([0x68, 0x65, 0x6C, 0x6C, 0x6F]))", |scope, v| { |