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");
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);
}

View File

@@ -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;
}