diff options
author | Olaf Hering <olaf@aepfle.de> | 2018-01-16 10:24:37 +0100 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2018-05-30 07:50:09 +0200 |
commit | 26dc3c373d72dcaa70e533d5d0ca626a02bf8785 (patch) | |
tree | 4373b59557fffb9ed6e5e666e0bd07d7b74dded1 /src/basic/virt.c | |
parent | 7ef95182343af165023847e42e27c17ff0047062 (diff) |
Fix parsing of features in detect_vm_xen_dom0 (#7890)
Use sscanf instead of the built-in safe_atolu because the scanned string
lacks the leading "0x", it is generated with snprintf(b, "%08x", val).
As a result strtoull handles it as octal, and parsing fails.
The initial submission already used sscanf, then parsing was replaced by
safe_atolu without retesting the updated PR.
Fixes 575e6588d ("virt: use XENFEAT_dom0 to detect the hardware domain
(#6442, #6662) (#7581)")
Diffstat (limited to 'src/basic/virt.c')
-rw-r--r-- | src/basic/virt.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/basic/virt.c b/src/basic/virt.c index 21e11b698..4c3791381 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -223,8 +223,8 @@ static int detect_vm_xen_dom0(void) { if (r == 0) { unsigned long features; - r = safe_atolu(domcap, &features); - if (r == 0) { + r = sscanf(domcap, "%lx", &features); + if (r == 1) { r = !!(features & (1U << XENFEAT_dom0)); log_debug("Virtualization XEN, found %s with value %08lx, " "XENFEAT_dom0 (indicating the 'hardware domain') is%s set.", |