From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5WeB-0007MT-Lf for qemu-devel@nongnu.org; Wed, 25 May 2016 07:06:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5We7-00041R-DT for qemu-devel@nongnu.org; Wed, 25 May 2016 07:06:42 -0400 Received: from mx2.suse.de ([195.135.220.15]:60180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5We7-000417-6u for qemu-devel@nongnu.org; Wed, 25 May 2016 07:06:39 -0400 References: <1464172291-2856-1-git-send-email-ppandit@redhat.com> <1464172291-2856-2-git-send-email-ppandit@redhat.com> From: Alexander Graf Message-ID: <5745873C.90400@suse.de> Date: Wed, 25 May 2016 13:06:36 +0200 MIME-Version: 1.0 In-Reply-To: <1464172291-2856-2-git-send-email-ppandit@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/3] scsi: megasas: use appropriate property buffer size List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: P J P , Qemu Developers Cc: Paolo Bonzini , Li Qiang , Hannes Reinecke , Prasad J Pandit On 05/25/2016 12:31 PM, P J P wrote: > From: Prasad J Pandit > > When setting MegaRAID SAS controller properties via MegaRAID > Firmware Interface(MFI) commands, a user supplied size parameter > is used to set property value. Use appropriate size value to avoid > OOB access issues. > > Reported-by: Li Qiang > Signed-off-by: Prasad J Pandit > --- > hw/scsi/megasas.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c > index a63a581..dcbd3e1 100644 > --- a/hw/scsi/megasas.c > +++ b/hw/scsi/megasas.c > @@ -1446,7 +1446,7 @@ static int megasas_dcmd_set_properties(MegasasState *s, MegasasCmd *cmd) > dcmd_size); > return MFI_STAT_INVALID_PARAMETER; > } > - dma_buf_write((uint8_t *)&info, cmd->iov_size, &cmd->qsg); > + dma_buf_write((uint8_t *)&info, dcmd_size, &cmd->qsg); This looks odd - can dcmd_size be bigger than iov_size? Wouldn't we overwrite guest memory then? And where does dcmd_size come from? I don't see it in master. Alex > trace_megasas_dcmd_unsupported(cmd->index, cmd->iov_size); > return MFI_STAT_OK; > }