X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Frr.rs;h=33fdb188f26f0be2fb3be95e50a9a16797315b16;hb=61f8c4b0f0c6c81bd5acf541d7f9a53b392c863f;hp=f7faef51b58520d5600e0e106952a1f253ca53d8;hpb=7d040061cb932f44f46a7f52c4f5404ee3b7c29b;p=dnssec-prover diff --git a/src/rr.rs b/src/rr.rs index f7faef5..33fdb18 100644 --- a/src/rr.rs +++ b/src/rr.rs @@ -247,7 +247,7 @@ impl StaticRecord for Txt { fn name(&self) -> &Name { &self.name } fn json(&self) -> String { if let Ok(s) = core::str::from_utf8(&self.data) { - if s.chars().all(|c| !c.is_control() && c != '"') { + if s.chars().all(|c| !c.is_control() && c != '"' && c != '\\') { return format!("{{\"type\":\"txt\",\"name\":\"{}\",\"contents\":\"{}\"}}", self.name.0, s); } } @@ -261,6 +261,7 @@ impl StaticRecord for Txt { parsed_data.extend_from_slice(&data[..len]); data = &data[len..]; } + debug_assert!(data.is_empty()); Ok(Txt { name, data: parsed_data }) } fn write_u16_len_prefixed_data(&self, out: &mut Vec) { @@ -349,7 +350,9 @@ impl StaticRecord for CName { self.name.0, self.canonical_name.0) } fn read_from_data(name: Name, mut data: &[u8], wire_packet: &[u8]) -> Result { - Ok(CName { name, canonical_name: read_wire_packet_name(&mut data, wire_packet)? }) + let res = CName { name, canonical_name: read_wire_packet_name(&mut data, wire_packet)? }; + debug_assert!(data.is_empty()); + Ok(res) } fn write_u16_len_prefixed_data(&self, out: &mut Vec) { let len: u16 = name_len(&self.canonical_name); @@ -378,7 +381,9 @@ impl StaticRecord for DName { self.name.0, self.delegation_name.0) } fn read_from_data(name: Name, mut data: &[u8], wire_packet: &[u8]) -> Result { - Ok(DName { name, delegation_name: read_wire_packet_name(&mut data, wire_packet)? }) + let res = DName { name, delegation_name: read_wire_packet_name(&mut data, wire_packet)? }; + debug_assert!(data.is_empty()); + Ok(res) } fn write_u16_len_prefixed_data(&self, out: &mut Vec) { let len: u16 = name_len(&self.delegation_name); @@ -665,7 +670,9 @@ impl StaticRecord for NS { format!("{{\"type\":\"ns\",\"name\":\"{}\",\"ns\":\"{}\"}}", self.name.0, self.name_server.0) } fn read_from_data(name: Name, mut data: &[u8], wire_packet: &[u8]) -> Result { - Ok(NS { name, name_server: read_wire_packet_name(&mut data, wire_packet)? }) + let res = NS { name, name_server: read_wire_packet_name(&mut data, wire_packet)? }; + debug_assert!(data.is_empty()); + Ok(res) } fn write_u16_len_prefixed_data(&self, out: &mut Vec) { out.extend_from_slice(&name_len(&self.name_server).to_be_bytes());