Description
In the Linux kernel, the following vulnerability has been resolved: hwmon: (pmbus/adm1266) bounce blackbox records through a protocol-sized buffer adm1266_pmbus_block_xfer() copies the device-supplied block payload into the caller-provided buffer using the device-supplied length: memcpy(data_r, &msgs[1].buf[1], msgs[1].buf[0]); The helper does not know how large data_r is and trusts the device to return at most one record's worth of bytes. adm1266_nvmem_read_blackbox() violates that contract: it advances read_buff inside data->dev_mem in ADM1266_BLACKBOX_SIZE (64-byte) strides while the helper is willing to write up to ADM1266_PMBUS_BLOCK_MAX (255) bytes. A device that returns more than 64 bytes on the trailing record (read_buff offset 1984 in the 2048-byte dev_mem allocation) overflows dev_mem by up to 191 bytes before the post-call if (ret != ADM1266_BLACKBOX_SIZE) return -EIO; can reject the response. Contain the fix in the caller without changing the helper signature: read each record into a 255-byte local bounce buffer that matches the helper's maximum output, validate the returned length, and only then copy exactly ADM1266_BLACKBOX_SIZE bytes into the dev_mem slot.
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
407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 7896d87cbb05e097efc113243d4e38f9f8cea16caffected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 9d5309500b4607b7198e19f0a3fa13eb864cd5fbaffected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 6098634cfa711f11a8d65368dc51ec8f7c8241baaffected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 60c4b9fe1a3dd012014b1f561a6928a0b5db1126affected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 83e039f0a43e0708515b0479cb7690fb93faaaa0affected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 97a9cf2a8217ca1cdaf48cb9ab26e471632c7e7faffected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < dd47b8c4a0a8ced442da3f008db28fbbd31feaf0affected407dc802a9c0809ca6a48de4b4c63305eb84ef56 to < 43cae21424ff8e33894a0f86c6b80b840c049fd7affected
Linux Linux
Default version status: affected
5.10affected0 to < 5.10unaffected5.10.258 to ≤ 5.10.*unaffected5.15.209 to ≤ 5.15.*unaffected6.1.175 to ≤ 6.1.*unaffected6.6.142 to ≤ 6.6.*unaffected6.12.92 to ≤ 6.12.*unaffected6.18.34 to ≤ 6.18.*unaffected7.0.11 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/7896d87cbb05e097efc113243d4e38f9f8cea16c ↗
- https://git.kernel.org/stable/c/9d5309500b4607b7198e19f0a3fa13eb864cd5fb ↗
- https://git.kernel.org/stable/c/6098634cfa711f11a8d65368dc51ec8f7c8241ba ↗
- https://git.kernel.org/stable/c/60c4b9fe1a3dd012014b1f561a6928a0b5db1126 ↗
- https://git.kernel.org/stable/c/83e039f0a43e0708515b0479cb7690fb93faaaa0 ↗
- https://git.kernel.org/stable/c/97a9cf2a8217ca1cdaf48cb9ab26e471632c7e7f ↗
- https://git.kernel.org/stable/c/dd47b8c4a0a8ced442da3f008db28fbbd31feaf0 ↗
- https://git.kernel.org/stable/c/43cae21424ff8e33894a0f86c6b80b840c049fd7 ↗