| From 8e7f7533ef41321089691047e90c11ad7b885e43 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 9 Oct 2023 16:00:54 -0400 |
| Subject: nfc: nci: assert requested protocol is valid |
| |
| From: Jeremy Cline <jeremy@jcline.org> |
| |
| [ Upstream commit 354a6e707e29cb0c007176ee5b8db8be7bd2dee0 ] |
| |
| The protocol is used in a bit mask to determine if the protocol is |
| supported. Assert the provided protocol is less than the maximum |
| defined so it doesn't potentially perform a shift-out-of-bounds and |
| provide a clearer error for undefined protocols vs unsupported ones. |
| |
| Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation") |
| Reported-and-tested-by: syzbot+0839b78e119aae1fec78@syzkaller.appspotmail.com |
| Closes: https://syzkaller.appspot.com/bug?extid=0839b78e119aae1fec78 |
| Signed-off-by: Jeremy Cline <jeremy@jcline.org> |
| Reviewed-by: Simon Horman <horms@kernel.org> |
| Link: https://lore.kernel.org/r/20231009200054.82557-1-jeremy@jcline.org |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/nfc/nci/core.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c |
| index 57849baf9294d..54b9efb5ae821 100644 |
| --- a/net/nfc/nci/core.c |
| +++ b/net/nfc/nci/core.c |
| @@ -894,6 +894,11 @@ static int nci_activate_target(struct nfc_dev *nfc_dev, |
| return -EINVAL; |
| } |
| |
| + if (protocol >= NFC_PROTO_MAX) { |
| + pr_err("the requested nfc protocol is invalid\n"); |
| + return -EINVAL; |
| + } |
| + |
| if (!(nci_target->supported_protocols & (1 << protocol))) { |
| pr_err("target does not support the requested protocol 0x%x\n", |
| protocol); |
| -- |
| 2.40.1 |
| |