In {Tcp,Udp}Socket::process, make protocol check an assertion.

We filter sockets by type upstream of the process() calls.
This commit is contained in:
whitequark 2017-06-30 19:17:14 +00:00
parent 6cc2d494ca
commit 938fb99070
2 changed files with 3 additions and 3 deletions

View File

@ -634,9 +634,9 @@ impl<'a> TcpSocket<'a> {
/// See [Socket::process](enum.Socket.html#method.process).
pub fn process(&mut self, timestamp: u64, ip_repr: &IpRepr,
payload: &[u8]) -> Result<(), Error> {
if self.state == State::Closed { return Err(Error::Rejected) }
debug_assert!(ip_repr.protocol() == IpProtocol::Tcp);
if ip_repr.protocol() != IpProtocol::Tcp { return Err(Error::Rejected) }
if self.state == State::Closed { return Err(Error::Rejected) }
let packet = TcpPacket::new_checked(&payload[..ip_repr.payload_len()])?;
let repr = TcpRepr::parse(&packet, &ip_repr.src_addr(), &ip_repr.dst_addr())?;

View File

@ -153,7 +153,7 @@ impl<'a, 'b> UdpSocket<'a, 'b> {
/// See [Socket::process](enum.Socket.html#method.process).
pub fn process(&mut self, _timestamp: u64, ip_repr: &IpRepr,
payload: &[u8]) -> Result<(), Error> {
if ip_repr.protocol() != IpProtocol::Udp { return Err(Error::Rejected) }
debug_assert!(ip_repr.protocol() == IpProtocol::Udp);
let packet = UdpPacket::new_checked(&payload[..ip_repr.payload_len()])?;
let repr = UdpRepr::parse(&packet, &ip_repr.src_addr(), &ip_repr.dst_addr())?;