Description
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix use-before-check of ReparseDataLength in reparse_buf_ptr() reparse_buf_ptr() reads buf->ReparseDataLength before checking that count covers the full fixed header: buf = (struct reparse_data_buffer *)((u8 *)io + off); len = sizeof(*buf); /* 8 bytes */ rdlen = le16_to_cpu(buf->ReparseDataLength); /* offset 4, 2 bytes */ if (count < len || count < rdlen + len) /* check comes after */ struct reparse_data_buffer has ReparseDataLength at offset 4. If a server returns OutputCount < 6, the read at offset 4-5 reaches past the end of the received data. The off+count bounds against iov_len were already validated, but that does not protect against count being smaller than sizeof(*buf). Split the check: verify count >= sizeof(*buf) before reading ReparseDataLength, then verify count covers the data region.
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
a158bb66b1373866d9fd5997565a58a573085539 to < b70bc592afd19732e2e4563300ebe8f974280365affected67ec9949b0dfe78c99e110dd975eb7dc5645630c to < 711cf71300d7992f450600df8864917d3538679faffected67ec9949b0dfe78c99e110dd975eb7dc5645630c to < 05f78e6cf34ea3a285053bd5999e08e8ac298bd5affected6.6.32 to < 6.6.160affected
Linux Linux
Default version status: affected
6.8affected0 to < 6.8unaffected6.6.160 to ≤ 6.6.*unaffected7.2.4 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected