Browse Source
Some Login ciphers stored in Vaultwarden have explicit `null` values for optional fields (e.g. `totp`, `passwordRevisionDate`, `username`, `uris`) rather than the field being absent. Upstream Bitwarden's server serializes these with `skip_serializing_if = "Option::is_none"` so the fields are always absent when unset, never `null`. The 2026.5+ Bitwarden clients (using the new sdk-internal WASM SDK) route JS `null` values into `EncString::deserialize` instead of short-circuiting `Option<T>` to `None`, and panic with `invalid type: unit value, expected a valid string`. Serde aborts on the first failure, so one bad cipher causes the entire vault to fail to load. Match upstream's shape by stripping explicit `null` values from the affected keys before emit. The legacy `uri` field (set unconditionally to `Value::Null` at line 261 for old mobile client compat) is deliberately not stripped. Refs: #7361, bitwarden/clients#21135pull/7467/head
1 changed files with 17 additions and 0 deletions
Loading…
Reference in new issue