From 8a3cabc686459f9f93eaa71502e56f98abfc43d2 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Sat, 14 Sep 2019 08:20:23 -0700 Subject: [PATCH] Define Magic newtype as `[u8; 4]`, not `u32`. The magic value isn't a u32, it's a byte string, so specifying it as such avoids ambiguity about endianness. --- zebra-network/src/constants.rs | 4 ++-- zebra-network/src/message.rs | 2 +- zebra-network/src/types.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index 0b543154c..4a9675574 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -9,7 +9,7 @@ pub const CURRENT_VERSION: Version = Version(170_007); pub mod magics { use super::*; /// The production mainnet. - pub const MAINNET: Magic = Magic(0x6427e924); + pub const MAINNET: Magic = Magic([0x24, 0xe9, 0x27, 0x64]); /// The testnet. - pub const TESTNET: Magic = Magic(0xbff91afa); + pub const TESTNET: Magic = Magic([0xfa, 0x1a, 0xf9, 0xbf]); } \ No newline at end of file diff --git a/zebra-network/src/message.rs b/zebra-network/src/message.rs index 90ebce5cf..9730a5e14 100644 --- a/zebra-network/src/message.rs +++ b/zebra-network/src/message.rs @@ -329,7 +329,7 @@ impl ZcashSerialization for Message { }; // Write the header and then the body. - writer.write_u32::(magic.0)?; + writer.write_all(&magic.0)?; writer.write_all(command)?; writer.write_u32::(body.len() as u32)?; writer.write_all(&Sha256dChecksum::from(&body[..]).0)?; diff --git a/zebra-network/src/types.rs b/zebra-network/src/types.rs index 105a9c486..ec5a8f95b 100644 --- a/zebra-network/src/types.rs +++ b/zebra-network/src/types.rs @@ -2,7 +2,7 @@ /// A magic number identifying the network. #[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub struct Magic(pub u32); +pub struct Magic(pub [u8; 4]); /// A protocol version number. #[derive(Copy, Clone, Debug, Eq, PartialEq)]