Explorar el Código

NDiscOption header with data length field 0 is invalid

Thibaut Vandervelden hace 2 años
padre
commit
14d5d03e55
Se han modificado 1 ficheros con 12 adiciones y 5 borrados
  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)
+                }
+            }
         }
     }