From c9af9b45bcffbaef2428e7d5a0a24c48392cf98c Mon Sep 17 00:00:00 2001 From: NegroDCC Date: Fri, 12 Jan 2024 12:52:10 -0300 Subject: [PATCH] Add extra verification in dnskey_rdata to throw a Err when bytes_len == 4 (public key is missing) --- src/message/rdata/dnskey_rdata.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/message/rdata/dnskey_rdata.rs b/src/message/rdata/dnskey_rdata.rs index 46401ca0..ec00e5b6 100644 --- a/src/message/rdata/dnskey_rdata.rs +++ b/src/message/rdata/dnskey_rdata.rs @@ -40,9 +40,12 @@ impl FromBytes> for DnskeyRdata { fn from_bytes(bytes: &[u8], _full_msg: &[u8]) -> Result { let bytes_len = bytes.len(); - if bytes_len <= 4 { + if bytes_len <= 3 { return Err("Format Error"); } + if bytes_len == 4 { + return Err("Public key not assigned"); + } let mut dnskey_rdata = DnskeyRdata::new(0, 0, 0, Vec::new()); @@ -199,12 +202,12 @@ mod dnskey_rdata_test{ dnskey_rdata.set_flags(1); dnskey_rdata.set_protocol(2); dnskey_rdata.set_algorithm(3); - dnskey_rdata.set_public_key(vec![0x01, 0x02]); + dnskey_rdata.set_public_key(vec![1, 2]); assert_eq!(dnskey_rdata.get_flags(), 1); assert_eq!(dnskey_rdata.get_protocol(), 2); assert_eq!(dnskey_rdata.get_algorithm(), 3); - assert_eq!(dnskey_rdata.get_public_key(), vec![0x01, 0x02]); + assert_eq!(dnskey_rdata.get_public_key(), vec![1, 2]); } #[test]