Bladeren bron

Data length field of 0 is invalid for ndisc option

Thibaut Vandervelden 2 jaren geleden
bovenliggende
commit
7f73afa641
1 gewijzigde bestanden met toevoegingen van 6 en 0 verwijderingen
  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)
     }