DF-1072 / verify.log
=== (1) the clamp only enforces upper bound (no lower bound check) ===
if (PNP_LRES_NUM(tag) == PNP_TAG_ID_ANSI) {
if (large_len > sizeof(buf) - 1)
large_len = sizeof(buf) - 1;
bcopy(resinfo, buf, large_len);
/*
* Trim trailing spaces.
*/
while (buf[large_len-1] == ' ')
large_len--;
buf[large_len] = '\0';
desc = buf;
if (dev)
device_set_desc_copy(dev, desc);
continue;
=== (2) with large_len == 0, buf[large_len-1] evaluates buf[-1] ===
C: 'A'[large_len-1] with large_len=0 -> 'A'[-1] -> undefined / stack OOB read
the loop continues decrementing past buf[0] while bytes below buf are 0x20.
then buf[large_len] = '