From 1a5b11db3f2fad1fb58402ee5f57634ad2a5648f Mon Sep 17 00:00:00 2001 From: Jubilee Young Date: Tue, 3 Sep 2024 00:11:18 -0700 Subject: [PATCH 1/2] bch_bindgen: Remove memoffset dep A trivial replacement allowed by std stabilizing it in rust 1.77. Less crate dependencies means less odd decisions by packagers. --- Cargo.lock | 16 ---------------- Cargo.toml | 2 +- bch_bindgen/Cargo.toml | 2 +- bch_bindgen/src/bcachefs.rs | 2 +- 4 files changed, 3 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4995ce52e..f78d22219 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,12 +65,6 @@ version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - [[package]] name = "bcachefs-tools" version = "1.12.0" @@ -103,7 +97,6 @@ dependencies = [ "bitfield", "bitflags 1.3.2", "byteorder", - "memoffset", "paste", "pkg-config", "uuid", @@ -379,15 +372,6 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - [[package]] name = "minimal-lexical" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index f2b937561..4d1703007 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "bcachefs-tools" version = "1.12.0" authors = ["Yuxuan Shui ", "Kayla Firestack ", "Kent Overstreet " ] edition = "2021" -rust-version = "1.70" +rust-version = "1.77" [[bin]] name = "bcachefs" diff --git a/bch_bindgen/Cargo.toml b/bch_bindgen/Cargo.toml index 63be4f3da..c46e275b4 100644 --- a/bch_bindgen/Cargo.toml +++ b/bch_bindgen/Cargo.toml @@ -3,6 +3,7 @@ name = "bch_bindgen" version = "0.1.0" authors = [ "Kayla Firestack ", "Yuxuan Shui ", "Kent Overstreet " ] edition = "2021" +rust-version = "1.77" [lib] crate-type = ["lib"] @@ -12,7 +13,6 @@ crate-type = ["lib"] anyhow = "1.0" uuid = "1.2.2" bitfield = "0.14.0" -memoffset = "0.8.0" byteorder = "1.3" bitflags = "1.3.2" paste = "1.0.11" diff --git a/bch_bindgen/src/bcachefs.rs b/bch_bindgen/src/bcachefs.rs index 366c7332b..f30f6e12c 100644 --- a/bch_bindgen/src/bcachefs.rs +++ b/bch_bindgen/src/bcachefs.rs @@ -18,7 +18,7 @@ bitfield! { pub struct bch_crypt_flags(u64); pub TYPE, _: 4, 0; } -use memoffset::offset_of; +use std::mem::offset_of; impl bch_sb_field_crypt { pub fn scrypt_flags(&self) -> Option { use std::convert::TryInto; From a1122aced26780d3f9629268c5e14ad84028da7a Mon Sep 17 00:00:00 2001 From: Jubilee Young Date: Tue, 3 Sep 2024 00:15:29 -0700 Subject: [PATCH 2/2] Remove byteorder dep This requires something other than literally zero code to replace, but is another opportunity to deny packagers the fun of experimenting with replacing crate versions with incompatible patched crate versions. --- Cargo.lock | 8 -------- Cargo.toml | 1 - bch_bindgen/Cargo.toml | 1 - bch_bindgen/src/bcachefs.rs | 7 +++---- src/key.rs | 5 ++--- 5 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f78d22219..0d7ddc14d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,7 +71,6 @@ version = "1.12.0" dependencies = [ "anyhow", "bch_bindgen", - "byteorder", "clap", "clap_complete", "either", @@ -96,7 +95,6 @@ dependencies = [ "bindgen", "bitfield", "bitflags 1.3.2", - "byteorder", "paste", "pkg-config", "uuid", @@ -143,12 +141,6 @@ version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "cc" version = "1.0.83" diff --git a/Cargo.toml b/Cargo.toml index 4d1703007..94043ee1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,6 @@ uuid = "1.2.2" errno = "0.2" either = "1.5" bch_bindgen = { path = "bch_bindgen" } -byteorder = "1.3" strum = { version = "0.26", features = ["derive"] } strum_macros = "0.26" zeroize = { version = "1", features = ["std", "zeroize_derive"] } diff --git a/bch_bindgen/Cargo.toml b/bch_bindgen/Cargo.toml index c46e275b4..2a819bb52 100644 --- a/bch_bindgen/Cargo.toml +++ b/bch_bindgen/Cargo.toml @@ -13,7 +13,6 @@ crate-type = ["lib"] anyhow = "1.0" uuid = "1.2.2" bitfield = "0.14.0" -byteorder = "1.3" bitflags = "1.3.2" paste = "1.0.11" diff --git a/bch_bindgen/src/bcachefs.rs b/bch_bindgen/src/bcachefs.rs index f30f6e12c..8f6d41a4b 100644 --- a/bch_bindgen/src/bcachefs.rs +++ b/bch_bindgen/src/bcachefs.rs @@ -67,10 +67,9 @@ impl bch_sb { /// Get the nonce used to encrypt the superblock pub fn nonce(&self) -> nonce { - use byteorder::{LittleEndian, ReadBytesExt}; - let mut internal_uuid = &self.uuid.b[..]; - let dword1 = internal_uuid.read_u32::().unwrap(); - let dword2 = internal_uuid.read_u32::().unwrap(); + let [a, b, c, d, e, f, g, h, _rest @ ..] = self.uuid.b; + let dword1 = u32::from_le_bytes([a, b, c, d]); + let dword2 = u32::from_le_bytes([e, f, g, h]); nonce { d: [0, 0, dword1, dword2], } diff --git a/src/key.rs b/src/key.rs index 2a40ce1b5..0043095c8 100644 --- a/src/key.rs +++ b/src/key.rs @@ -14,7 +14,6 @@ use bch_bindgen::{ c::{bch2_chacha_encrypt_key, bch_encrypted_key, bch_sb_field_crypt}, keyutils::{self, keyctl_search}, }; -use byteorder::{LittleEndian, ReadBytesExt}; use log::{debug, info}; use rustix::termios; use uuid::Uuid; @@ -22,7 +21,7 @@ use zeroize::{ZeroizeOnDrop, Zeroizing}; use crate::{c_str, ErrnoError}; -const BCH_KEY_MAGIC: &str = "bch**key"; +const BCH_KEY_MAGIC: &[u8; 8] = b"bch**key"; #[derive(Clone, Debug, clap::ValueEnum, strum::Display)] pub enum UnlockPolicy { @@ -225,7 +224,7 @@ impl Passphrase { } pub fn check(&self, sb: &bch_sb_handle) -> Result<(bch_key, bch_encrypted_key)> { - let bch_key_magic = BCH_KEY_MAGIC.as_bytes().read_u64::().unwrap(); + let bch_key_magic = u64::from_le_bytes(*BCH_KEY_MAGIC); let crypt = sb .sb()