浏览代码

Fix a crash printing a malformed TCP packet.

Found via cargo-fuzz.
whitequark 7 年之前
父节点
当前提交
2582d1573d
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      src/wire/tcp.rs

+ 7 - 0
src/wire/tcp.rs

@@ -729,6 +729,13 @@ impl<'a, T: AsRef<[u8]> + ?Sized> fmt::Display for Packet<&'a T> {
             try!(write!(f, " urg={}", self.urgent_at()))
         }
         try!(write!(f, " len={}", self.payload().len()));
+
+        let header_len = self.header_len() as usize;
+        if header_len < field::URGENT.end {
+            try!(write!(f, " {}", Error::Truncated));
+            return Ok(())
+        }
+
         let mut options = self.options();
         while options.len() > 0 {
             let (next_options, option) =