From 2a13facac4048d190e10cb55326da38a2caaf9fc Mon Sep 17 00:00:00 2001 From: xofyarg Date: Mon, 6 May 2024 04:41:18 -0700 Subject: [PATCH] Minor fixes for 0.10.0 (#310) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following fixes: * Allow AllRecordData’s parsing impls to accept an unsized [u8] as the source octets. * Accept an empty record type bitmap when scanning NSEC/NSEC3 data. --- src/rdata/dnssec.rs | 9 +++++++-- src/rdata/macros.rs | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/rdata/dnssec.rs b/src/rdata/dnssec.rs index e90747c3..8b5d7d45 100644 --- a/src/rdata/dnssec.rs +++ b/src/rdata/dnssec.rs @@ -2030,10 +2030,8 @@ impl RtypeBitmap { pub fn scan>( scanner: &mut S, ) -> Result { - let first = Rtype::scan(scanner)?; let mut builder = RtypeBitmapBuilder::with_builder(scanner.octets_builder()?); - builder.add(first).map_err(|_| S::Error::short_buf())?; while scanner.continues() { builder .add(Rtype::scan(scanner)?) @@ -2728,6 +2726,13 @@ mod test { test_rdlen(&rdata); test_compose_parse(&rdata, |parser| Nsec::parse(parser)); test_scan(&["example.com.", "A", "SRV"], Nsec::scan, &rdata); + + // scan empty rtype bitmap + let rdata = Nsec::new( + Name::>::from_str("example.com.").unwrap(), + RtypeBitmapBuilder::new_vec().finalize(), + ); + test_scan(&["example.com."], Nsec::scan, &rdata); } //--- Ds diff --git a/src/rdata/macros.rs b/src/rdata/macros.rs index ac0b4969..08c5d47b 100644 --- a/src/rdata/macros.rs +++ b/src/rdata/macros.rs @@ -912,7 +912,7 @@ macro_rules! rdata_types { } } - impl<'a, Octs: Octets> + impl<'a, Octs: Octets + ?Sized> ParseAnyRecordData<'a, Octs> for AllRecordData, ParsedName>> { fn parse_any_rdata( @@ -950,7 +950,7 @@ macro_rules! rdata_types { } } - impl<'a, Octs: Octets> + impl<'a, Octs: Octets + ?Sized> ParseRecordData<'a, Octs> for AllRecordData, ParsedName>> { fn parse_rdata(