浏览代码

Data length field of 0 is invalid for ndisc option

Thibaut Vandervelden 2 年之前
父节点
当前提交
7f73afa641
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      src/wire/ndiscoption.rs

+ 6 - 0
src/wire/ndiscoption.rs

@@ -158,6 +158,12 @@ impl<T: AsRef<[u8]>> NdiscOption<T> {
     pub fn new_checked(buffer: T) -> Result<NdiscOption<T>> {
         let opt = Self::new_unchecked(buffer);
         opt.check_len()?;
+
+        // A data length field of 0 is invalid.
+        if opt.data_len() == 0 {
+            return Err(Error);
+        }
+
         Ok(opt)
     }