diff options
| author | Fuwn <[email protected]> | 2025-09-11 06:14:44 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-09-11 06:14:44 +0000 |
| commit | f80e2cd059de032153a0e24acd2bb8395992cd22 (patch) | |
| tree | 637d63c87d5010aab3c0160f64ce320919a68e0c /src | |
| parent | fix(request): Handle invalid URLs (diff) | |
| download | germ-f80e2cd059de032153a0e24acd2bb8395992cd22.tar.xz germ-f80e2cd059de032153a0e24acd2bb8395992cd22.zip | |
fix(meta): Better comply with RFC 2045
Diffstat (limited to 'src')
| -rw-r--r-- | src/meta.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/meta.rs b/src/meta.rs index d50af2d..453bbb6 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -78,13 +78,15 @@ impl Meta { let mut parameters = HashMap::new(); for parameter in metas { - let key_value = - parameter.trim_start().split_at(parameter.find('=').unwrap_or(0)); + let trimmed = parameter.trim_start(); - parameters.insert( - key_value.0.to_string().replace('=', ""), - key_value.1.to_string(), - ); + // Only parse parameters containing '=' as those without are malformed + // according to RFC 2045 + if let Some(equal_pos) = trimmed.find('=') { + let (key, value) = trimmed.split_at(equal_pos); + + parameters.insert(key.to_string(), value[1..].to_string()); + } } Self { mime, parameters } |