Skip to content

Commit

Permalink
Fix Pw History null dates (#4966)
Browse files Browse the repository at this point in the history
It seemed to have been possible to have `null` date values.
This PR fixes this by setting the epoch start date if either the date does not exists or is not a string.

This should solve sync issues with the new native mobile clients.

Fixes #4932 (comment)

Signed-off-by: BlackDex <black.dex@gmail.com>
  • Loading branch information
BlackDex authored Sep 18, 2024
1 parent 6ceed92 commit 1bf8520
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/db/models/cipher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,20 @@ impl Cipher {
.map(|d| {
// Check every password history item if they are valid and return it.
// If a password field has the type `null` skip it, it breaks newer Bitwarden clients
// A second check is done to verify the lastUsedDate exists and is a string, if not the epoch start time will be used
d.into_iter()
.filter_map(|d| match d.data.get("password") {
Some(p) if p.is_string() => Some(d.data),
_ => None,
})
.map(|d| match d.get("lastUsedDate") {
Some(l) if l.is_string() => d,
_ => {
let mut d = d;
d["lastUsedDate"] = json!("1970-01-01T00:00:00.000Z");
d
}
})
.collect()
})
.unwrap_or_default();
Expand Down

0 comments on commit 1bf8520

Please sign in to comment.