]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nfc/nci: Add the inconsistency check between the input data length and count
authorEdward Adam Davis <eadavis@qq.com>
Tue, 28 May 2024 03:12:31 +0000 (11:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Jul 2024 10:51:23 +0000 (12:51 +0200)
[ Upstream commit 068648aab72c9ba7b0597354ef4d81ffaac7b979 ]

write$nci(r0, &(0x7f0000000740)=ANY=[@ANYBLOB="610501"], 0xf)

Syzbot constructed a write() call with a data length of 3 bytes but a count value
of 15, which passed too little data to meet the basic requirements of the function
nci_rf_intf_activated_ntf_packet().

Therefore, increasing the comparison between data length and count value to avoid
problems caused by inconsistent data length and count.

Reported-and-tested-by: syzbot+71bfed2b2bcea46c98f2@syzkaller.appspotmail.com
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nfc/virtual_ncidev.c

index 590b038e449e5c61c9950ce6074fe94020915207..6b89d596ba9afe7f5d1225ec2681be6705137532 100644 (file)
@@ -125,6 +125,10 @@ static ssize_t virtual_ncidev_write(struct file *file,
                kfree_skb(skb);
                return -EFAULT;
        }
+       if (strnlen(skb->data, count) != count) {
+               kfree_skb(skb);
+               return -EINVAL;
+       }
 
        nci_recv_frame(vdev->ndev, skb);
        return count;