Nixpkgs security tracker

Try the new UI
Login with GitHub
⚠️ You are using a production deployment that is still only suitable for demo purposes. Any work done in this might be wiped later without notice.

Suggestion detail

Dismissed
(max. allowed matches exceeded)
created 1 week, 5 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
w1: ds28e17: reject an oversize length on an I2C block read

In the Linux kernel, the following vulnerability has been resolved: w1: ds28e17: reject an oversize length on an I2C block read w1_f19_i2c_master_transfer() is the master_xfer for the DS28E17 1-Wire to I2C bridge. On an I2C_M_RECV_LEN read, it takes the length from the device. The downstream slave puts a length byte in buf[0]. The driver then reads that many bytes into buf[1] with w1_f19_i2c_read(). buf[0] is controlled by the device and can be 0 to 255. w1_f19_i2c_read() only rejects a zero count. The caller buffer is I2C_SMBUS_BLOCK_MAX + 2, so 34 bytes. A length above 32 makes the read run past it, up to about 222 bytes out of bounds. The SMBus core does check buf[0] against I2C_SMBUS_BLOCK_MAX. That check runs after master_xfer returns. By then the write is already done. i2c-algo-bit rejects an oversize length before it copies, and returns -EPROTO. Reject a length above I2C_SMBUS_BLOCK_MAX at both RECV_LEN sites, the same way i2c-algo-bit does.

Affected products

Linux
  • <4.15
  • <6df05f630c84a109736642362e452089886f9974
  • <169ae5e65e5aaf213b6a578f6478a9fd2e523606
  • ==4.15
  • =<7.2.*
  • <ae0c79a8527044e54d81fd5a3b49ce6177633758
  • =<6.18.*
  • <cb55c5da9828f77db2a2701316949d4de1e9b773
  • =<6.12.*
  • =<*