Pārlūkot izejas kodu

Make sure representation emission covers every octet of the buffer.

Also fix a bug where TcpRepr::emit would not clear the urgent
pointer.
whitequark 7 gadi atpakaļ
vecāks
revīzija
534842b929
6 mainītis faili ar 14 papildinājumiem un 11 dzēšanām
  1. 2 2
      src/wire/arp.rs
  2. 1 1
      src/wire/ethernet.rs
  3. 2 2
      src/wire/icmpv4.rs
  4. 3 2
      src/wire/ipv4.rs
  5. 4 2
      src/wire/tcp.rs
  6. 2 2
      src/wire/udp.rs

+ 2 - 2
src/wire/arp.rs

@@ -392,7 +392,7 @@ mod test {
 
     #[test]
     fn test_construct() {
-        let mut bytes = vec![0; 28];
+        let mut bytes = vec![0xa5; 28];
         let mut packet = Packet::new(&mut bytes);
         packet.set_hardware_type(Hardware::Ethernet);
         packet.set_protocol_type(Protocol::Ipv4);
@@ -429,7 +429,7 @@ mod test {
 
     #[test]
     fn test_emit() {
-        let mut bytes = vec![0; 28];
+        let mut bytes = vec![0xa5; 28];
         let mut packet = Packet::new(&mut bytes);
         packet_repr().emit(&mut packet);
         assert_eq!(&packet.into_inner()[..], &PACKET_BYTES[..]);

+ 1 - 1
src/wire/ethernet.rs

@@ -262,7 +262,7 @@ mod test {
 
     #[test]
     fn test_construct() {
-        let mut bytes = vec![0; 64];
+        let mut bytes = vec![0xa5; 64];
         let mut frame = Frame::new(&mut bytes);
         frame.set_dst_addr(Address([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]));
         frame.set_src_addr(Address([0x11, 0x12, 0x13, 0x14, 0x15, 0x16]));

+ 2 - 2
src/wire/icmpv4.rs

@@ -558,7 +558,7 @@ mod test {
 
     #[test]
     fn test_echo_construct() {
-        let mut bytes = vec![0; 12];
+        let mut bytes = vec![0xa5; 12];
         let mut packet = Packet::new(&mut bytes);
         packet.set_msg_type(Message::EchoRequest);
         packet.set_msg_code(0);
@@ -587,7 +587,7 @@ mod test {
     #[test]
     fn test_echo_emit() {
         let repr = echo_packet_repr();
-        let mut bytes = vec![0; repr.buffer_len()];
+        let mut bytes = vec![0xa5; repr.buffer_len()];
         let mut packet = Packet::new(&mut bytes);
         repr.emit(&mut packet);
         assert_eq!(&packet.into_inner()[..], &ECHO_PACKET_BYTES[..]);

+ 3 - 2
src/wire/ipv4.rs

@@ -590,10 +590,11 @@ mod test {
 
     #[test]
     fn test_construct() {
-        let mut bytes = vec![0; 30];
+        let mut bytes = vec![0xa5; 30];
         let mut packet = Packet::new(&mut bytes);
         packet.set_version(4);
         packet.set_header_len(20);
+        packet.clear_flags();
         packet.set_dscp(0);
         packet.set_ecn(0);
         packet.set_total_len(30);
@@ -651,7 +652,7 @@ mod test {
     #[test]
     fn test_emit() {
         let repr = packet_repr();
-        let mut bytes = vec![0; repr.buffer_len() + REPR_PAYLOAD_BYTES.len()];
+        let mut bytes = vec![0xa5; repr.buffer_len() + REPR_PAYLOAD_BYTES.len()];
         let mut packet = Packet::new(&mut bytes);
         repr.emit(&mut packet);
         packet.payload_mut().copy_from_slice(&REPR_PAYLOAD_BYTES);

+ 4 - 2
src/wire/tcp.rs

@@ -723,6 +723,7 @@ impl<'a> Repr<'a> {
                 TcpOption::EndOfList.emit(options);
             }
         }
+        packet.set_urgent_at(0);
         packet.payload_mut().copy_from_slice(self.payload);
         packet.fill_checksum(src_addr, dst_addr)
     }
@@ -858,13 +859,14 @@ mod test {
 
     #[test]
     fn test_construct() {
-        let mut bytes = vec![0; PACKET_BYTES.len()];
+        let mut bytes = vec![0xa5; PACKET_BYTES.len()];
         let mut packet = Packet::new(&mut bytes);
         packet.set_src_port(48896);
         packet.set_dst_port(80);
         packet.set_seq_number(SeqNumber(0x01234567));
         packet.set_ack_number(SeqNumber(0x89abcdefu32 as i32));
         packet.set_header_len(24);
+        packet.clear_flags();
         packet.set_fin(true);
         packet.set_syn(false);
         packet.set_rst(true);
@@ -926,7 +928,7 @@ mod test {
     #[test]
     fn test_emit() {
         let repr = packet_repr();
-        let mut bytes = vec![0; repr.buffer_len()];
+        let mut bytes = vec![0xa5; repr.buffer_len()];
         let mut packet = Packet::new(&mut bytes);
         repr.emit(&mut packet, &SRC_ADDR.into(), &DST_ADDR.into());
         assert_eq!(&packet.into_inner()[..], &SYN_PACKET_BYTES[..]);

+ 2 - 2
src/wire/udp.rs

@@ -298,7 +298,7 @@ mod test {
 
     #[test]
     fn test_construct() {
-        let mut bytes = vec![0; 12];
+        let mut bytes = vec![0xa5; 12];
         let mut packet = Packet::new(&mut bytes);
         packet.set_src_port(48896);
         packet.set_dst_port(53);
@@ -335,7 +335,7 @@ mod test {
     #[test]
     fn test_emit() {
         let repr = packet_repr();
-        let mut bytes = vec![0; repr.buffer_len()];
+        let mut bytes = vec![0xa5; repr.buffer_len()];
         let mut packet = Packet::new(&mut bytes);
         repr.emit(&mut packet, &SRC_ADDR.into(), &DST_ADDR.into());
         assert_eq!(&packet.into_inner()[..], &PACKET_BYTES[..]);