summaryrefslogtreecommitdiff
path: root/kexec
diff options
context:
space:
mode:
authorPhilipp Rudo <prudo@redhat.com>2022-03-23 16:35:36 +0100
committerSimon Horman <horms@verge.net.au>2022-03-24 11:55:23 +0100
commitf4c59879b830c7d574a953e6ce970ddaf20910d7 (patch)
tree86283045cf95f19ae98b6700d1becf6820ded9fc /kexec
parent30bfe30bb6095a930db46011beb0c69e9399a358 (diff)
util_lib/elf_info: harden parsing of printk buffer
The old printk mechanism (> v3.5.0 and < v5.10.0) had a fixed size buffer (log_buf) that contains all messages. The location for the next message is stored in log_next_idx. In case the log_buf runs full log_next_idx wraps around and starts overwriting old messages at the beginning of the buffer. The wraparound is denoted by a message with msg->len == 0. Following the behavior described above blindly is dangerous as e.g. a memory corruption could overwrite (parts of) the log_buf. If the corruption adds a message with msg->len == 0 this leads to an endless loop when dumping the dmesg. Fix this by verifying that not wrapped around before when it encounters a message with msg->len == 0. While at it also verify that the index is within the log_buf and thus guard against corruptions with msg->len != 0. The same bug has been reported and fixed in makedumpfile [1]. [1] http://lists.infradead.org/pipermail/kexec/2022-March/024272.html Signed-off-by: Philipp Rudo <prudo@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec')
0 files changed, 0 insertions, 0 deletions