summaryrefslogtreecommitdiffstats
path: root/sys-utils/lscpu.c
diff options
context:
space:
mode:
authorKarel Zak2017-06-01 12:15:23 +0200
committerKarel Zak2017-06-01 12:15:23 +0200
commit0145d84a381fc2fcd7d37e0dbf3d9dff69609ecd (patch)
tree047497c25d934b284358fe35160e8692ec7ae1f5 /sys-utils/lscpu.c
parentcolumn: add missed semicolons in case of !HAVE_WIDECHAR (diff)
downloadkernel-qcow2-util-linux-0145d84a381fc2fcd7d37e0dbf3d9dff69609ecd.tar.gz
kernel-qcow2-util-linux-0145d84a381fc2fcd7d37e0dbf3d9dff69609ecd.tar.xz
kernel-qcow2-util-linux-0145d84a381fc2fcd7d37e0dbf3d9dff69609ecd.zip
lscpu: make min/max freq arrays usage more robust
The array members may be NULL on some architectures (e.g. AMD). Let's be paranoid and check for the NULL independently on present/online masks. Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1457744 Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/lscpu.c')
-rw-r--r--sys-utils/lscpu.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
index dc998267a..3b549a7a0 100644
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -1264,7 +1264,8 @@ cpu_max_mhz(struct lscpu_desc *desc, char *buf, size_t bufsz)
if (desc->present) {
for (i = 1; i < desc->ncpuspos; i++) {
- if (CPU_ISSET(real_cpu_num(desc, i), desc->present)) {
+ if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
+ && desc->maxmhz[i]) {
float freq = atof(desc->maxmhz[i]);
if (freq > cpu_freq)
@@ -1285,7 +1286,8 @@ cpu_min_mhz(struct lscpu_desc *desc, char *buf, size_t bufsz)
if (desc->present) {
for (i = 1; i < desc->ncpuspos; i++) {
- if (CPU_ISSET(real_cpu_num(desc, i), desc->present)) {
+ if (CPU_ISSET(real_cpu_num(desc, i), desc->present)
+ && desc->minmhz[i]) {
float freq = atof(desc->minmhz[i]);
if (freq < cpu_freq)
@@ -1597,11 +1599,11 @@ get_cell_data(struct lscpu_desc *desc, int idx, int col,
is_cpu_online(desc, cpu) ? _("yes") : _("no"));
break;
case COL_MAXMHZ:
- if (desc->maxmhz)
+ if (desc->maxmhz && desc->maxmhz[idx])
xstrncpy(buf, desc->maxmhz[idx], bufsz);
break;
case COL_MINMHZ:
- if (desc->minmhz)
+ if (desc->minmhz && desc->minmhz[idx])
xstrncpy(buf, desc->minmhz[idx], bufsz);
break;
}