summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-06-19 12:09:32 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-06-19 12:09:32 -0400
commit02aa11829a686cf3fc01b6c2525cf1a7c1daed4a (patch)
treeb4403181a683af3f73b929088950ab06cf3efe8f
parentadb63be4797f5d4c154f8f3533b64c0a9c6a26ad (diff)
parent41df701a089fbf19fe16d65fbb6df46854b1f3df (diff)
Merge commit '41df701a089fbf19fe16d65fbb6df46854b1f3df' of https://github.com/tmuehlbacher/bcachefs-tools
-rw-r--r--.editorconfig4
-rw-r--r--src/commands/logger.rs2
-rw-r--r--src/key.rs29
3 files changed, 23 insertions, 12 deletions
diff --git a/.editorconfig b/.editorconfig
index 2d9a3109..9270938d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -28,3 +28,7 @@ indent_size = 4
[*.rs]
indent_style = space
indent_size = 4
+
+[*.sh]
+indent_size = 4
+indent_style = space
diff --git a/src/commands/logger.rs b/src/commands/logger.rs
index 2cd7b363..a24bcbda 100644
--- a/src/commands/logger.rs
+++ b/src/commands/logger.rs
@@ -16,7 +16,7 @@ impl log::Log for SimpleLogger {
Level::Debug => "DEBUG".bright_blue(),
Level::Trace => "TRACE".into(),
};
- println!(
+ eprintln!(
"{} - {}: {}",
debug_prefix,
record.module_path().unwrap_or_default().bright_black(),
diff --git a/src/key.rs b/src/key.rs
index 54959d6e..96eb491d 100644
--- a/src/key.rs
+++ b/src/key.rs
@@ -110,25 +110,32 @@ impl KeyHandle {
}
}
- pub fn new_from_search(uuid: &Uuid) -> Result<Self> {
- let key_name = Self::format_key_name(uuid);
- let key_name = CStr::as_ptr(&key_name);
+ fn search_keyring(keyring: i32, key_name: &CStr) -> Result<i64> {
+ let key_name = CStr::as_ptr(key_name);
let key_type = c_str!("user");
- let key_id =
- unsafe { keyctl_search(keyutils::KEY_SPEC_USER_KEYRING, key_type, key_name, 0) };
+ let key_id = unsafe { keyctl_search(keyring, key_type, key_name, 0) };
if key_id > 0 {
info!("Found key in keyring");
- Ok(Self {
- _uuid: *uuid,
- _id: key_id,
- })
+ Ok(key_id)
} else {
Err(ErrnoError(errno::errno()).into())
}
}
+ pub fn new_from_search(uuid: &Uuid) -> Result<Self> {
+ let key_name = Self::format_key_name(uuid);
+
+ Self::search_keyring(keyutils::KEY_SPEC_SESSION_KEYRING, &key_name)
+ .or_else(|_| Self::search_keyring(keyutils::KEY_SPEC_USER_KEYRING, &key_name))
+ .or_else(|_| Self::search_keyring(keyutils::KEY_SPEC_USER_SESSION_KEYRING, &key_name))
+ .map(|id| Self {
+ _uuid: *uuid,
+ _id: id,
+ })
+ }
+
fn wait_for_unlock(uuid: &Uuid) -> Result<Self> {
loop {
match Self::new_from_search(uuid) {
@@ -158,7 +165,7 @@ impl Passphrase {
line
};
- Ok(Self(CString::new(passphrase.as_str())?))
+ Ok(Self(CString::new(passphrase.trim_end_matches('\n'))?))
}
pub fn new_from_file(sb: &bch_sb_handle, passphrase_file: impl AsRef<Path>) -> Result<Self> {
@@ -172,6 +179,6 @@ impl Passphrase {
let passphrase = Zeroizing::new(fs::read_to_string(passphrase_file)?);
- Ok(Self(CString::new(passphrase.as_str())?))
+ Ok(Self(CString::new(passphrase.trim_end_matches('\n'))?))
}
}