From 8500db5ee0172eb246f085289b851836900fa853 Mon Sep 17 00:00:00 2001 From: Tomasz Zawadzki Date: Thu, 18 Jul 2019 07:44:36 -0400 Subject: [PATCH] lib/vmd: check header_type after the vmd_adapter structure is verified First check both vmd_pci_device for not being a NULL, same as vmd_adapter structure being present. Otherwise dev was dereferenced before checking for NULL. Change-Id: I3719f33c1762f789b0eb63b0f2ddce8258843ded Signed-off-by: Tomasz Zawadzki Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/462509 Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Wojciech Malikowski Reviewed-by: Ben Walker --- lib/vmd/vmd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/vmd/vmd.c b/lib/vmd/vmd.c index 4de8f78be..f2d9dbf1a 100644 --- a/lib/vmd/vmd.c +++ b/lib/vmd/vmd.c @@ -173,7 +173,7 @@ vmd_assign_base_addrs(struct vmd_pci_device *dev) { uint16_t mem_base = 0, mem_limit = 0; unsigned char mem_attr = 0; - int last = dev->header_type ? 2 : 6; + int last; struct vmd_adapter *vmd = NULL; bool ret_val = false; uint32_t bar_value; @@ -189,6 +189,7 @@ vmd_assign_base_addrs(struct vmd_pci_device *dev) vmd_align_base_addrs(vmd, ONE_MB); + last = dev->header_type ? 2 : 6; for (int i = 0; i < last; i++) { bar_value = dev->header->zero.BAR[i]; dev->header->zero.BAR[i] = ~(0U);