Disable checksum validation on wire level when fuzzing.

v0.7.x
whitequark 2017-06-24 15:26:15 +00:00
parent fce23593fc
commit 023d8deea5
4 changed files with 20 additions and 0 deletions

View File

@ -276,7 +276,12 @@ impl<T: AsRef<[u8]>> Packet<T> {
}
/// Validate the header checksum.
///
/// # Fuzzing
/// This function always returns `true` when fuzzing.
pub fn verify_checksum(&self) -> bool {
if cfg!(fuzzing) { return true }
let data = self.buffer.as_ref();
checksum::data(data) == !0
}

View File

@ -233,7 +233,12 @@ impl<T: AsRef<[u8]>> Packet<T> {
}
/// Validate the header checksum.
///
/// # Fuzzing
/// This function always returns `true` when fuzzing.
pub fn verify_checksum(&self) -> bool {
if cfg!(fuzzing) { return true }
let data = self.buffer.as_ref();
checksum::data(&data[..self.header_len() as usize]) == !0
}

View File

@ -289,7 +289,12 @@ impl<T: AsRef<[u8]>> Packet<T> {
/// # Panics
/// This function panics unless `src_addr` and `dst_addr` belong to the same family,
/// and that family is IPv4 or IPv6.
///
/// # Fuzzing
/// This function always returns `true` when fuzzing.
pub fn verify_checksum(&self, src_addr: &IpAddress, dst_addr: &IpAddress) -> bool {
if cfg!(fuzzing) { return true }
let data = self.buffer.as_ref();
checksum::combine(&[
checksum::pseudo_header(src_addr, dst_addr, IpProtocol::Tcp,

View File

@ -104,7 +104,12 @@ impl<T: AsRef<[u8]>> Packet<T> {
/// # Panics
/// This function panics unless `src_addr` and `dst_addr` belong to the same family,
/// and that family is IPv4 or IPv6.
///
/// # Fuzzing
/// This function always returns `true` when fuzzing.
pub fn verify_checksum(&self, src_addr: &IpAddress, dst_addr: &IpAddress) -> bool {
if cfg!(fuzzing) { return true }
let data = self.buffer.as_ref();
checksum::combine(&[
checksum::pseudo_header(src_addr, dst_addr, IpProtocol::Udp,