nfc: Ensure presence of required attributes in the activate_target handler
authorMateusz Jurczyk <[email protected]>
Wed, 24 May 2017 10:42:26 +0000 (12:42 +0200)
committerSamuel Ortiz <[email protected]>
Thu, 22 Jun 2017 22:28:39 +0000 (00:28 +0200)
Check that the NFC_ATTR_TARGET_INDEX and NFC_ATTR_PROTOCOLS attributes (in
addition to NFC_ATTR_DEVICE_INDEX) are provided by the netlink client
prior to accessing them. This prevents potential unhandled NULL pointer
dereference exceptions which can be triggered by malicious user-mode
programs, if they omit one or both of these attributes.

Signed-off-by: Mateusz Jurczyk <[email protected]>
Acked-by: Kees Cook <[email protected]>
Signed-off-by: Samuel Ortiz <[email protected]>
net/nfc/netlink.c

index 6b0850e63e09cf747a498f913f7eabe11e59c380..b251fb936a27a9632c55d5aa91c1dbd2fa543ffa 100644 (file)
@@ -907,7 +907,9 @@ static int nfc_genl_activate_target(struct sk_buff *skb, struct genl_info *info)
        u32 device_idx, target_idx, protocol;
        int rc;
 
-       if (!info->attrs[NFC_ATTR_DEVICE_INDEX])
+       if (!info->attrs[NFC_ATTR_DEVICE_INDEX] ||
+           !info->attrs[NFC_ATTR_TARGET_INDEX] ||
+           !info->attrs[NFC_ATTR_PROTOCOLS])
                return -EINVAL;
 
        device_idx = nla_get_u32(info->attrs[NFC_ATTR_DEVICE_INDEX]);