Strip off newline chars from password (#1199)
* strips off newline chars from password * adds changes suggested in author review
This commit is contained in:
parent
ea4a52984c
commit
6383c95f8b
@ -37,3 +37,57 @@ pub fn base_wallet_dir(matches: &ArgMatches, arg: &'static str) -> Result<PathBu
|
|||||||
PathBuf::new().join(".lighthouse").join("wallets"),
|
PathBuf::new().join(".lighthouse").join("wallets"),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Remove any number of newline or carriage returns from the end of a vector of bytes.
|
||||||
|
pub fn strip_off_newlines(mut bytes: Vec<u8>) -> Vec<u8> {
|
||||||
|
let mut strip_off = 0;
|
||||||
|
for (i, byte) in bytes.iter().rev().enumerate() {
|
||||||
|
if *byte == b'\n' || *byte == b'\r' {
|
||||||
|
strip_off = i + 1;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bytes.truncate(bytes.len() - strip_off);
|
||||||
|
|
||||||
|
bytes.to_vec()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::strip_off_newlines;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_strip_off() {
|
||||||
|
let expected = "hello world".as_bytes().to_vec();
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\n".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\n\n\n\n".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\r".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\r\r\r\r\r".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\r\n".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world\r\n\r\n".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
strip_off_newlines("hello world".as_bytes().to_vec()),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
use crate::{common::random_password, BASE_DIR_FLAG};
|
use crate::{
|
||||||
|
common::{random_password, strip_off_newlines},
|
||||||
|
BASE_DIR_FLAG,
|
||||||
|
};
|
||||||
use clap::{App, Arg, ArgMatches};
|
use clap::{App, Arg, ArgMatches};
|
||||||
use eth2_wallet::{
|
use eth2_wallet::{
|
||||||
bip39::{Language, Mnemonic, MnemonicType},
|
bip39::{Language, Mnemonic, MnemonicType},
|
||||||
@ -104,7 +107,10 @@ pub fn cli_run(matches: &ArgMatches, base_dir: PathBuf) -> Result<(), String> {
|
|||||||
|
|
||||||
let wallet_password = fs::read(&wallet_password_path)
|
let wallet_password = fs::read(&wallet_password_path)
|
||||||
.map_err(|e| format!("Unable to read {:?}: {:?}", wallet_password_path, e))
|
.map_err(|e| format!("Unable to read {:?}: {:?}", wallet_password_path, e))
|
||||||
.map(|bytes| PlainText::from(bytes))?;
|
.map(|bytes| {
|
||||||
|
let bytes = strip_off_newlines(bytes);
|
||||||
|
PlainText::from(bytes)
|
||||||
|
})?;
|
||||||
|
|
||||||
let wallet = mgr
|
let wallet = mgr
|
||||||
.create_wallet(name, wallet_type, &mnemonic, wallet_password.as_bytes())
|
.create_wallet(name, wallet_type, &mnemonic, wallet_password.as_bytes())
|
||||||
|
Loading…
Reference in New Issue
Block a user