diff options
author | Karel Zak | 2016-06-24 11:07:00 +0200 |
---|---|---|
committer | Karel Zak | 2016-06-24 11:07:00 +0200 |
commit | 81a307bd4d906815dad7b6b3c355f663907a68c4 (patch) | |
tree | a674be91adbd5a54cd6f280c6c8e3ce25ed9975c /sys-utils/lscpu.c | |
parent | lscpu: fix MMHZ column entry within man page (diff) | |
download | kernel-qcow2-util-linux-81a307bd4d906815dad7b6b3c355f663907a68c4.tar.gz kernel-qcow2-util-linux-81a307bd4d906815dad7b6b3c355f663907a68c4.tar.xz kernel-qcow2-util-linux-81a307bd4d906815dad7b6b3c355f663907a68c4.zip |
lscpu: make lookup_cache() more robust
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/lscpu.c')
-rw-r--r-- | sys-utils/lscpu.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c index 4bd8e872d..b30b003b1 100644 --- a/sys-utils/lscpu.c +++ b/sys-utils/lscpu.c @@ -438,15 +438,20 @@ lookup_cache(char *line, struct lscpu_desc *desc) if (!p || strncmp(p, "Private", 7) == 0) return 0; p = strstr(line, "level="); - sscanf(p, "level=%d", &level); + if (!p || sscanf(p, "level=%d", &level) != 1) + return 0; p = strstr(line, "type=") + 5; + if (!p || !*p) + return 0; type = 0; if (strncmp(p, "Data", 4) == 0) type = 'd'; if (strncmp(p, "Instruction", 11) == 0) type = 'i'; p = strstr(line, "size="); - sscanf(p, "size=%lld", &size); + if (!p || sscanf(p, "size=%lld", &size) != 1) + return 0; + desc->necaches++; desc->ecaches = xrealloc(desc->ecaches, desc->necaches * sizeof(struct cpu_cache)); |