From 13e0f9fe8334859ee86f4ff725374d1d83f5baf7 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Tue, 16 Jan 2018 10:24:37 +0100 Subject: [PATCH] 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)") --- src/basic/virt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/basic/virt.c b/src/basic/virt.c index fe582833a75..9b6abf9f19d 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -222,8 +222,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.",