Skip to content

Commit c9af9b4

Browse files
committed
Add extra verification in dnskey_rdata to throw a Err when bytes_len == 4 (public key is missing)
1 parent fd22de1 commit c9af9b4

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/message/rdata/dnskey_rdata.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ impl FromBytes<Result<Self, &'static str>> for DnskeyRdata {
4040
fn from_bytes(bytes: &[u8], _full_msg: &[u8]) -> Result<Self, &'static str> {
4141
let bytes_len = bytes.len();
4242

43-
if bytes_len <= 4 {
43+
if bytes_len <= 3 {
4444
return Err("Format Error");
4545
}
46+
if bytes_len == 4 {
47+
return Err("Public key not assigned");
48+
}
4649

4750
let mut dnskey_rdata = DnskeyRdata::new(0, 0, 0, Vec::new());
4851

@@ -199,12 +202,12 @@ mod dnskey_rdata_test{
199202
dnskey_rdata.set_flags(1);
200203
dnskey_rdata.set_protocol(2);
201204
dnskey_rdata.set_algorithm(3);
202-
dnskey_rdata.set_public_key(vec![0x01, 0x02]);
205+
dnskey_rdata.set_public_key(vec![1, 2]);
203206

204207
assert_eq!(dnskey_rdata.get_flags(), 1);
205208
assert_eq!(dnskey_rdata.get_protocol(), 2);
206209
assert_eq!(dnskey_rdata.get_algorithm(), 3);
207-
assert_eq!(dnskey_rdata.get_public_key(), vec![0x01, 0x02]);
210+
assert_eq!(dnskey_rdata.get_public_key(), vec![1, 2]);
208211
}
209212

210213
#[test]

0 commit comments

Comments
 (0)