浏览代码

NDiscOption header with data length field 0 is invalid

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

+ 12 - 5
src/wire/ndiscoption.rs

@@ -477,11 +477,18 @@ impl<'a> Repr<'a> {
                     Err(Error)
                 }
             }
-            Type::Unknown(id) => Ok(Repr::Unknown {
-                type_: id,
-                length: opt.data_len(),
-                data: opt.data(),
-            }),
+            Type::Unknown(id) => {
+                // A length of 0 is invalid.
+                if opt.data_len() != 0 {
+                    Ok(Repr::Unknown {
+                        type_: id,
+                        length: opt.data_len(),
+                        data: opt.data(),
+                    })
+                } else {
+                    Err(Error)
+                }
+            }
         }
     }