OSDN Git Service

net: ieee802154: return -EINVAL for unknown addr type
authorAlexander Aring <aahringo@redhat.com>
Thu, 6 Oct 2022 02:02:37 +0000 (22:02 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Oct 2022 07:42:00 +0000 (08:42 +0100)
This patch adds handling to return -EINVAL for an unknown addr type. The
current behaviour is to return 0 as successful but the size of an
unknown addr type is not defined and should return an error like -EINVAL.

Fixes: 94160108a70c ("net/ieee802154: fix uninit value bug in dgram_sendmsg")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ieee802154_netdev.h

index a8994f3..03b64bf 100644 (file)
@@ -185,21 +185,27 @@ static inline int
 ieee802154_sockaddr_check_size(struct sockaddr_ieee802154 *daddr, int len)
 {
        struct ieee802154_addr_sa *sa;
+       int ret = 0;
 
        sa = &daddr->addr;
        if (len < IEEE802154_MIN_NAMELEN)
                return -EINVAL;
        switch (sa->addr_type) {
+       case IEEE802154_ADDR_NONE:
+               break;
        case IEEE802154_ADDR_SHORT:
                if (len < IEEE802154_NAMELEN_SHORT)
-                       return -EINVAL;
+                       ret = -EINVAL;
                break;
        case IEEE802154_ADDR_LONG:
                if (len < IEEE802154_NAMELEN_LONG)
-                       return -EINVAL;
+                       ret = -EINVAL;
+               break;
+       default:
+               ret = -EINVAL;
                break;
        }
-       return 0;
+       return ret;
 }
 
 static inline void ieee802154_addr_from_sa(struct ieee802154_addr *a,