diff options
author | Alexander Aring <alex.aring@gmail.com> | 2014-11-01 23:18:46 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-11-01 23:51:08 -0400 |
commit | ea7053c1df41689dea0db2c49dc9d25dbe8fcf33 (patch) | |
tree | b50caff2ea41a25ad86953b1fb53cef5aa90c9cd /net | |
parent | cb904b0a16305f9b2a98200cc6eb9dc3610278b0 (diff) |
mac802154: iface: add validation for extended address
This patch use the validation function to check if an extended address
is valid or not while set the extended address.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac802154/iface.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c index eaad66590f10..ceedf3ef1ce2 100644 --- a/net/mac802154/iface.c +++ b/net/mac802154/iface.c | |||
@@ -112,13 +112,17 @@ static int mac802154_wpan_mac_addr(struct net_device *dev, void *p) | |||
112 | { | 112 | { |
113 | struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev); | 113 | struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev); |
114 | struct sockaddr *addr = p; | 114 | struct sockaddr *addr = p; |
115 | __le64 extended_addr; | ||
115 | 116 | ||
116 | if (netif_running(dev)) | 117 | if (netif_running(dev)) |
117 | return -EBUSY; | 118 | return -EBUSY; |
118 | 119 | ||
119 | /* FIXME: validate addr */ | 120 | extended_addr = ieee802154_netdev_to_extended_addr(addr->sa_data); |
121 | if (!ieee802154_is_valid_extended_addr(extended_addr)) | ||
122 | return -EINVAL; | ||
123 | |||
120 | memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); | 124 | memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); |
121 | sdata->extended_addr = ieee802154_netdev_to_extended_addr(dev->dev_addr); | 125 | sdata->extended_addr = extended_addr; |
122 | 126 | ||
123 | return mac802154_wpan_update_llsec(dev); | 127 | return mac802154_wpan_update_llsec(dev); |
124 | } | 128 | } |