From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:56467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R78H0-0003d9-4I for qemu-devel@nongnu.org; Fri, 23 Sep 2011 12:06:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R78Gy-0003KF-Pq for qemu-devel@nongnu.org; Fri, 23 Sep 2011 12:06:46 -0400 Received: from mail-yw0-f45.google.com ([209.85.213.45]:64812) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R78Gy-0003KA-IU for qemu-devel@nongnu.org; Fri, 23 Sep 2011 12:06:44 -0400 Received: by ywm39 with SMTP id 39so3552797ywm.4 for ; Fri, 23 Sep 2011 09:06:43 -0700 (PDT) Message-ID: <4E7CAE91.1010509@codemonkey.ws> Date: Fri, 23 Sep 2011 11:06:41 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1316633111-32404-1-git-send-email-ddutile@redhat.com> In-Reply-To: <1316633111-32404-1-git-send-email-ddutile@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] pci-devfn: check that device/slot number is within range List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Donald Dutile Cc: qemu-devel@nongnu.org On 09/21/2011 02:25 PM, Donald Dutile wrote: > Need to check that guest slot/device number is not> 31 or walk off > the devfn table when checking if a devfn is available or not in a guest. > > before this fix, passing in an addr=abc or addr=34, > can crash qemu, sometimes fail gracefully if data past end > of devfn table fails the availability test. > > with this fix, get clean error: > Property 'pci-assign.addr' doesn't take value '34' > > also tested when no addr= param passed for guest (pcicfg) address, > and that worked as well. > > Signed-off-by: Don Dutile Applied. Thanks. Regards, Anthony Liguori > > --- > hw/qdev-properties.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c > index 7ce95b6..e0e54aa 100644 > --- a/hw/qdev-properties.c > +++ b/hw/qdev-properties.c > @@ -524,6 +524,8 @@ static int parse_pci_devfn(DeviceState *dev, Property *prop, const char *str) > return -EINVAL; > if (fn> 7) > return -EINVAL; > + if (slot> 31) > + return -EINVAL; > *ptr = slot<< 3 | fn; > return 0; > }