From 91c92bbdf6325194e8933027f59be021880eeff1 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Mon, 7 Oct 2024 08:44:55 +0100 Subject: [PATCH] Fix: Do not enter get_uarch_from_riscv_cpuinfo with a zero marchid and use strtoul instead of strtol for unsigned long --- src/riscv/uarch.c | 4 ++-- src/riscv/udev.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/riscv/uarch.c b/src/riscv/uarch.c index c4e4ef7..209e2ff 100644 --- a/src/riscv/uarch.c +++ b/src/riscv/uarch.c @@ -93,8 +93,8 @@ struct uarch* get_uarch(struct cpuInfo* cpu) { printWarn("get_uarch_from_cpuinfo: Unable to detect microarchitecture using uarch: cpuinfo_str is NULL"); arch->ci = get_riscv_cpuinfo(); - if (arch->ci == NULL) - printWarn("get_riscv_cpuinfo: Unable to get cpuinfo from udev"); + if (arch->ci == NULL || arch->ci->marchid == 0) + printWarn("get_riscv_cpuinfo: Unable to get marchid from udev"); else arch = get_uarch_from_riscv_cpuinfo(cpu, arch); } diff --git a/src/riscv/udev.c b/src/riscv/udev.c index bd4a9d2..dfe709b 100644 --- a/src/riscv/udev.c +++ b/src/riscv/udev.c @@ -92,9 +92,9 @@ unsigned long parse_cpuinfo_field_uint64(char* field_str) { char* end; errno = 0; - long ret = strtol(tmp, &end, 16); - if(errno != 0) { - printWarn("strtol: %s:\n", strerror(errno)); + unsigned long ret = strtoul(tmp, &end, 16); + if (errno != 0) { + printWarn("strtoul: %s: %s", strerror(errno), tmp); return 0; }