nfc: Ensure presence of required attributes in the activate_target handler
authorMateusz Jurczyk <mjurczyk@google.com>
Wed, 24 May 2017 10:42:26 +0000 (12:42 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
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 <mjurczyk@google.com>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
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]);