Skip to content

Commit 2eba057

Browse files
authored
Merge pull request #183 from replydev/fix/import_on_first_run
Fix panic when importing on first run.
2 parents e3cbe14 + f524563 commit 2eba057

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/argument_functions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ pub fn export(matches: &ArgMatches, database: &mut OTPDatabase) -> Result<String
152152
pub fn change_password(database: &mut OTPDatabase) -> Result<String, String> {
153153
let mut new_password = utils::verified_password("New password: ", 8);
154154
let r = match database.save_with_pw(&new_password) {
155-
Ok(()) => Ok(String::from("Password changed")),
155+
Ok(_) => Ok(String::from("Password changed")),
156156
Err(e) => Err(format!("An error has occurred: {e}")),
157157
};
158158
new_password.zeroize();

src/main.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ fn init() -> Result<ReadResult, String> {
3131
elements: vec![],
3232
..Default::default()
3333
};
34-
if database.save_with_pw(&pw).is_err() {
35-
return Err(String::from(
34+
let save_result = database.save_with_pw(&pw);
35+
pw.zeroize();
36+
match save_result {
37+
Ok((key, salt)) => Ok((database, key, salt.to_vec())),
38+
Err(_) => Err(String::from(
3639
"An error occurred during database overwriting",
37-
));
40+
)),
3841
}
39-
pw.zeroize();
40-
Ok((database, vec![], vec![]))
4142
} else {
4243
get_elements()
4344
}

src/otp/otp_element.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,11 @@ impl OTPDatabase {
7070
}
7171
}
7272

73-
pub fn save_with_pw(&mut self, password: &str) -> Result<(), String> {
73+
pub fn save_with_pw(&mut self, password: &str) -> Result<(Vec<u8>, [u8; 16]), String> {
7474
let salt = gen_salt()?;
7575
let key = argon_derive_key(password.as_bytes(), &salt)?;
76-
self.save(&key, &salt)
76+
self.save(&key, &salt)?;
77+
Ok((key, salt))
7778
}
7879

7980
pub fn export(&self, path: PathBuf) -> Result<PathBuf, String> {

0 commit comments

Comments
 (0)