fix: return Err instead of panic on unknown cipher atype in to_json() (#7068)

`Cipher::to_json()` returns `Result<Value, Error>` but its match arm for
unknown `atype` values called `panic!("Wrong type")` instead of
propagating an error. This means if a cipher with an invalid/unknown type
ends up in the database (via direct DB edits, data migration issues, or
future type additions in the upstream Bitwarden protocol), the entire
server process would crash on the next sync request.

Replace the `panic!` with `err!()` so callers receive a proper `Err` and
can handle or log it gracefully without taking down the server.

Co-authored-by: easonysliu <easonysliu@tencent.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Daniel García <dani-garcia@users.noreply.github.com>
This commit is contained in:
eason 2026-04-30 04:58:50 +08:00 committed by GitHub
parent b89648a136
commit cb46fcb948
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -403,7 +403,7 @@ impl Cipher {
3 => "card",
4 => "identity",
5 => "sshKey",
_ => panic!("Wrong type"),
_ => err!(format!("Cipher {} has an invalid type {}", self.uuid, self.atype)),
};
json_object[key] = type_data_json;