Browse Source

use mnl_attr_validate

Fabian Peter Hammerle 7 years ago
parent
commit
3c9d6dbf40
3 changed files with 4 additions and 2 deletions
  1. 1 0
      hardware_address.h
  2. 2 1
      link.cpp
  3. 1 1
      operstate.h

+ 1 - 0
hardware_address.h

@@ -18,6 +18,7 @@ class HardwareAddress : public YamlObject {
 
 public:
   HardwareAddress &operator=(const nlattr *attr) {
+    assert(mnl_attr_validate(attr, MNL_TYPE_BINARY) == 0);
     assert(mnl_attr_get_payload_len(attr) == IFHWADDRLEN);
     memcpy(this->bytes, mnl_attr_get_payload(attr), IFHWADDRLEN);
     return *this;

+ 2 - 1
link.cpp

@@ -17,10 +17,11 @@ int Link::mnl_attr_cb(const nlattr *attr, void *data) {
     link->broadcast = attr;
     break;
   case IFLA_IFNAME:
+    assert(mnl_attr_validate(attr, MNL_TYPE_STRING) == 0);
     link->ifname = mnl_attr_get_str(attr);
     break;
   case IFLA_MTU:
-    assert(mnl_attr_get_payload_len(attr) == 4);
+    assert(mnl_attr_validate(attr, MNL_TYPE_U32) == 0);
     link->mtu = mnl_attr_get_u32(attr);
     break;
   case IFLA_OPERSTATE:

+ 1 - 1
operstate.h

@@ -24,7 +24,7 @@ class OperState : public YamlObject {
 
 public:
   OperState &operator=(const nlattr *attr) {
-    assert(mnl_attr_get_payload_len(attr) == 1);
+    assert(mnl_attr_validate(attr, MNL_TYPE_U8) == 0);
     this->state = mnl_attr_get_u8(attr);
     return *this;
   }