platform/x86: hp-bioscfg: fix off-by-one write in hp_get_string_from_buffer()
21Vexday Risk Score
No sign of exploitation. No public exploitation artifact known so far.
ssvc Trackcvss 8.4epss 0.1%
exploitation probability
0.1%top 96% of all CVEs
observed exploitation
nono source reports it
In the Linux kernel, the following vulnerability has been resolved:
platform/x86: hp-bioscfg: fix off-by-one write in hp_get_string_from_buffer()
hp_get_string_from_buffer() clamps the converted string length against
the destination buffer size with "size > dst_size", so when the
converted length is exactly equal to dst_size, conv_dst_size is left
at dst_size and the unconditional NUL terminator write
dst[conv_dst_size] = 0;
lands one byte past the destination buffer. This is the same shape of
bug as the previously fixed off-by-one in hp_convert_hexstr_to_str():
the buffer is sized correctly for the content, but the terminator
write is never checked against that size.
Fix by changing the comparison to ">=" so conv_dst_size is always left
with room for the terminator.
All fixed-size destinations that reach this function (path[512],
current_value[512], current_password/current_value[64], and the
per-entry buffers in encodings[][512] and prerequisites[][512]) are
affected.
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
Linux · LinuxReferences
https://git.kernel.org/stable/c/3cc772d0154799961f032e5a992d4a50523e291ahttps://git.kernel.org/stable/c/8f5aa1506cdddea6b33584c2445b9ce99eeddb64https://git.kernel.org/stable/c/b15b334fbc3c0c46440f8a892ebf62164fca23d6https://git.kernel.org/stable/c/dc03f05e419f3460342fb7564884f244622634b6https://git.kernel.org/stable/c/ddf98cf33529714b3ba1a158afb1db5b0f759a1a