From: Andrew Cooper Date: Wed, 16 Sep 2015 09:22:00 +0000 (+0200) Subject: x86/sysctl: don't clobber memory if NCAPINTS > ARRAY_SIZE(pi->hw_cap) X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2532 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c373b912e74659f0e0898ae93e89513694cfd94e;p=xen.git 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 --- 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 )