From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrdWk-0003pz-Hc for qemu-devel@nongnu.org; Wed, 28 Oct 2015 23:05:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZrdWh-0006TM-BY for qemu-devel@nongnu.org; Wed, 28 Oct 2015 23:05:22 -0400 Received: from mga02.intel.com ([134.134.136.20]:57689) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrdWh-0006TH-6C for qemu-devel@nongnu.org; Wed, 28 Oct 2015 23:05:19 -0400 References: <1446071191-62591-1-git-send-email-guangrong.xiao@linux.intel.com> <1446071191-62591-30-git-send-email-guangrong.xiao@linux.intel.com> <20151028164645.GC1925@stefanha-x1.localdomain> <5631837C.60503@linux.intel.com> From: Xiao Guangrong Message-ID: <56318B5F.8010600@linux.intel.com> Date: Thu, 29 Oct 2015 10:58:39 +0800 MIME-Version: 1.0 In-Reply-To: <5631837C.60503@linux.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 29/33] nvdimm acpi: support Get Namespace Label Data function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, imammedo@redhat.com, pbonzini@redhat.com, dan.j.williams@intel.com, rth@twiddle.net On 10/29/2015 10:25 AM, Xiao Guangrong wrote: > > > On 10/29/2015 12:46 AM, Stefan Hajnoczi wrote: >> On Wed, Oct 28, 2015 at 10:26:27PM +0000, Xiao Guangrong wrote: >>> +static void nvdimm_dsm_func_get_label_data(NVDIMMDevice *nvdimm, >>> + nvdimm_dsm_in *in, GArray *out) >>> +{ >>> + NVDIMMClass *nvc = NVDIMM_GET_CLASS(nvdimm); >>> + nvdimm_func_in_get_label_data *get_label_data = &in->func_get_label_data; >>> + void *buf; >>> + uint32_t status = NVDIMM_DSM_STATUS_SUCCESS; >>> + >>> + le32_to_cpus(&get_label_data->offset); >>> + le32_to_cpus(&get_label_data->length); >>> + >>> + nvdimm_debug("Read Label Data: offset %#x length %#x.\n", >>> + get_label_data->offset, get_label_data->length); >>> + >>> + if (nvdimm->label_size < get_label_data->offset + get_label_data->length) { >> >> Integer overflow isn't handled here and it's unclear if that can cause >> problems later on. It's safest to catch it right away instead of >> relying on nvc->read_label_data() to check again. >> > > Good catch, Stefan! I will fix it by adding a additional check: > > if (get_label_data->offset + get_label_data->length > get_label_data->offset) { < Sorry for the typo.