mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
x86: zimage: Sanity-check the kernel version before printing it
With Chrome OS the kernel setup block is stored in a separate place from the kernel, so it is not possible to access the kernel version string. At present, garbage is printed. Add a sanity check to avoid this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
b73d61a556
commit
7c79eddbec
1 changed files with 9 additions and 0 deletions
|
@ -31,6 +31,7 @@
|
|||
#include <asm/arch/timestamp.h>
|
||||
#endif
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/libfdt.h>
|
||||
|
||||
/*
|
||||
|
@ -175,11 +176,19 @@ static const char *get_kernel_version(struct boot_params *params,
|
|||
{
|
||||
struct setup_header *hdr = ¶ms->hdr;
|
||||
int bootproto;
|
||||
const char *s, *end;
|
||||
|
||||
bootproto = get_boot_protocol(hdr, false);
|
||||
if (bootproto < 0x0200 || hdr->setup_sects < 15)
|
||||
return NULL;
|
||||
|
||||
/* sanity-check the kernel version in case it is missing */
|
||||
for (s = kernel_base + hdr->kernel_version + 0x200, end = s + 0x100; *s;
|
||||
s++) {
|
||||
if (!isprint(*s))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return kernel_base + hdr->kernel_version + 0x200;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue