From c373b912e74659f0e0898ae93e89513694cfd94e Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Wed, 16 Sep 2015 11:22:00 +0200 Subject: [PATCH] x86/sysctl: don't clobber memory if NCAPINTS > ARRAY_SIZE(pi->hw_cap) There is no current problem, as both NCAPINTS and pi->hw_cap are 8 entries, but the limit should be calculated appropriately so as to avoid hypervisor stack corruption if the two do get out of sync. Signed-off-by: Andrew Cooper --- xen/arch/x86/sysctl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c index f36b52fe5e..38b5dcb3d8 100644 --- a/xen/arch/x86/sysctl.c +++ b/xen/arch/x86/sysctl.c @@ -75,7 +75,8 @@ long cpu_down_helper(void *data) void arch_do_physinfo(xen_sysctl_physinfo_t *pi) { - memcpy(pi->hw_cap, boot_cpu_data.x86_capability, NCAPINTS*4); + memcpy(pi->hw_cap, boot_cpu_data.x86_capability, + min(sizeof(pi->hw_cap), sizeof(boot_cpu_data.x86_capability))); if ( hvm_enabled ) pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm; if ( iommu_enabled ) -- 2.30.2