Fix: Do not enter get_uarch_from_riscv_cpuinfo with a zero marchid and use strtoul instead of strtol for unsigned long

This commit is contained in:
Dr-Noob
2024-10-07 08:44:55 +01:00
parent d0cc04529c
commit 91c92bbdf6
2 changed files with 5 additions and 5 deletions

View File

@@ -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"); printWarn("get_uarch_from_cpuinfo: Unable to detect microarchitecture using uarch: cpuinfo_str is NULL");
arch->ci = get_riscv_cpuinfo(); arch->ci = get_riscv_cpuinfo();
if (arch->ci == NULL) if (arch->ci == NULL || arch->ci->marchid == 0)
printWarn("get_riscv_cpuinfo: Unable to get cpuinfo from udev"); printWarn("get_riscv_cpuinfo: Unable to get marchid from udev");
else else
arch = get_uarch_from_riscv_cpuinfo(cpu, arch); arch = get_uarch_from_riscv_cpuinfo(cpu, arch);
} }

View File

@@ -92,9 +92,9 @@ unsigned long parse_cpuinfo_field_uint64(char* field_str) {
char* end; char* end;
errno = 0; errno = 0;
long ret = strtol(tmp, &end, 16); unsigned long ret = strtoul(tmp, &end, 16);
if(errno != 0) { if (errno != 0) {
printWarn("strtol: %s:\n", strerror(errno)); printWarn("strtoul: %s: %s", strerror(errno), tmp);
return 0; return 0;
} }