Skip to content

Commit

Permalink
Make sure representation emission covers every octet of the buffer.
Browse files Browse the repository at this point in the history
Also fix a bug where TcpRepr::emit would not clear the urgent
pointer.
whitequark committed Jun 26, 2017
1 parent 8ace8cd commit 534842b
Showing 6 changed files with 14 additions and 11 deletions.
4 changes: 2 additions & 2 deletions src/wire/arp.rs
Original file line number Diff line number Diff line change
@@ -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[..]);
2 changes: 1 addition & 1 deletion src/wire/ethernet.rs
Original file line number Diff line number Diff line change
@@ -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]));
4 changes: 2 additions & 2 deletions src/wire/icmpv4.rs
Original file line number Diff line number Diff line change
@@ -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[..]);
5 changes: 3 additions & 2 deletions src/wire/ipv4.rs
Original file line number Diff line number Diff line change
@@ -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);
6 changes: 4 additions & 2 deletions src/wire/tcp.rs
Original file line number Diff line number Diff line change
@@ -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[..]);
4 changes: 2 additions & 2 deletions src/wire/udp.rs
Original file line number Diff line number Diff line change
@@ -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[..]);

0 comments on commit 534842b

Please sign in to comment.