mirror of
https://github.com/apache/nuttx.git
synced 2026-05-25 01:39:44 +08:00
net/netdev: correct the ioctl command validation logic
This patch fixes the validation order in netdev ioctl handlers for Bluetooth, IEEE 802.15.4, and packet radio devices. The command type should be validated before checking the argument pointer to return the correct error code (-ENOTTY vs -EINVAL). Signed-off-by: zhanghongyu <zhanghongyu@xiaomi.com>
This commit is contained in:
+13
-14
@@ -394,11 +394,11 @@ static int netdev_bluetooth_ioctl(FAR struct socket *psock, int cmd,
|
||||
{
|
||||
FAR struct net_driver_s *dev;
|
||||
FAR char *ifname;
|
||||
int ret = -EINVAL;
|
||||
int ret = -ENOTTY;
|
||||
|
||||
if (arg != 0ul)
|
||||
if (_BLUETOOTHIOCVALID(cmd))
|
||||
{
|
||||
if (_BLUETOOTHIOCVALID(cmd))
|
||||
if (arg != 0ul)
|
||||
{
|
||||
/* Get the name of the Bluetooth device to receive the IOCTL
|
||||
* command
|
||||
@@ -411,9 +411,9 @@ static int netdev_bluetooth_ioctl(FAR struct socket *psock, int cmd,
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Not a Bluetooth IOCTL command */
|
||||
/* Argument is invalid */
|
||||
|
||||
return -ENOTTY;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Find the device with this name */
|
||||
@@ -459,9 +459,9 @@ static int netdev_iee802154_ioctl(FAR struct socket *psock, int cmd,
|
||||
FAR char *ifname;
|
||||
int ret = -ENOTTY;
|
||||
|
||||
if (arg != 0ul)
|
||||
if (_MAC802154IOCVALID(cmd))
|
||||
{
|
||||
if (_MAC802154IOCVALID(cmd))
|
||||
if (arg != 0ul)
|
||||
{
|
||||
/* Get the IEEE802.15.4 MAC device to receive the radio IOCTL
|
||||
* command
|
||||
@@ -474,9 +474,9 @@ static int netdev_iee802154_ioctl(FAR struct socket *psock, int cmd,
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Not an EEE802.15.4 MAC IOCTL command */
|
||||
/* Argument is invalid */
|
||||
|
||||
return -ENOTTY;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Find the device with this name */
|
||||
@@ -520,9 +520,9 @@ static int netdev_pktradio_ioctl(FAR struct socket *psock, int cmd,
|
||||
FAR char *ifname;
|
||||
int ret = -ENOTTY;
|
||||
|
||||
if (arg != 0ul)
|
||||
if (_PKRADIOIOCVALID(cmd))
|
||||
{
|
||||
if (_PKRADIOIOCVALID(cmd))
|
||||
if (arg != 0ul)
|
||||
{
|
||||
/* Get the packet radio device to receive the radio IOCTL
|
||||
* command
|
||||
@@ -535,10 +535,9 @@ static int netdev_pktradio_ioctl(FAR struct socket *psock, int cmd,
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Not a packet radio IOCTL command */
|
||||
/* Argument is invalid */
|
||||
|
||||
nwarn("WARNING: Not a packet radio IOCTL command: %d\n", cmd);
|
||||
return -ENOTTY;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Find the device with this name */
|
||||
|
||||
Reference in New Issue
Block a user