Description
In the Linux kernel, the following vulnerability has been resolved: nfc: pn533: allocate rx skb before consuming bytes pn532_receive_buf() reports the number of accepted bytes to the serdev core. The current code consumes bytes into recv_skb and may already hand a complete frame to pn533_recv_frame() before allocating a fresh receive buffer. If that alloc_skb() fails, the callback returns 0 even though it has already consumed bytes, and it leaves recv_skb as NULL for the next receive callback. That breaks the receive_buf() accounting contract and can also lead to a NULL dereference on the next skb_put_u8(). Allocate the receive skb lazily before consuming the next byte instead. If allocation fails, return the number of bytes already accepted.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
c656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 2ca64fb7e2d2ae14619dd204d4f2f0a601f421fbaffectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 8b71299d587d9e4c830c18afb884c80ddb30ad28affectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 16649adc2e19509104245ea1f349b629d858f11faffectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 07cb6c72e66ba548679f22ac29ad588da8999279affectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < a9495069b43b8634c1ae0042e888766c34f66637affectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 21ae2cda66a55c759607bbf1d23cbaa42019d2deaffectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < 7e37da42eda45d7859d9273fc7e225d8df458038affectedc656aa4c27b17a8c70da223ed5ab42145800d6b5 to < c71ba669b570c7b3f86ec875be222ea11dacb352affected
Linux Linux
Default version status: affected
5.5affected0 to < 5.5unaffected5.10.253 to ≤ 5.10.*unaffected5.15.203 to ≤ 5.15.*unaffected6.1.169 to ≤ 6.1.*unaffected6.6.135 to ≤ 6.6.*unaffected6.12.82 to ≤ 6.12.*unaffected6.18.23 to ≤ 6.18.*unaffected6.19.13 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/2ca64fb7e2d2ae14619dd204d4f2f0a601f421fb ↗
- https://git.kernel.org/stable/c/8b71299d587d9e4c830c18afb884c80ddb30ad28 ↗
- https://git.kernel.org/stable/c/16649adc2e19509104245ea1f349b629d858f11f ↗
- https://git.kernel.org/stable/c/07cb6c72e66ba548679f22ac29ad588da8999279 ↗
- https://git.kernel.org/stable/c/a9495069b43b8634c1ae0042e888766c34f66637 ↗
- https://git.kernel.org/stable/c/21ae2cda66a55c759607bbf1d23cbaa42019d2de ↗
- https://git.kernel.org/stable/c/7e37da42eda45d7859d9273fc7e225d8df458038 ↗
- https://git.kernel.org/stable/c/c71ba669b570c7b3f86ec875be222ea11dacb352 ↗