From patchwork Tue Feb 26 20:00:39 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Ian King X-Patchwork-Id: 223471 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 922322C0084 for ; Wed, 27 Feb 2013 13:58:14 +1100 (EST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1UAXDh-0005Nh-2b; Wed, 27 Feb 2013 02:58:13 +0000 Received: from fiordland.canonical.com ([91.189.94.145]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1UARJU-00087Q-HF for fwts-devel@lists.ubuntu.com; Tue, 26 Feb 2013 20:39:48 +0000 Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) by fiordland.canonical.com (Postfix) with ESMTP id F0BF4A19905 for ; Tue, 26 Feb 2013 20:00:40 +0000 (UTC) Received: from cpc3-craw6-2-0-cust180.croy.cable.virginmedia.com ([77.100.248.181] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1UAQhb-00012R-Sp; Tue, 26 Feb 2013 20:00:39 +0000 From: Colin King To: fwts-devel@lists.ubuntu.com Subject: [PATCH] uefirtvariable: Correct DataSize for GetVariable() Date: Tue, 26 Feb 2013 20:00:39 +0000 Message-Id: <1361908839-23722-2-git-send-email-colin.king@canonical.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1361908839-23722-1-git-send-email-colin.king@canonical.com> References: <1361908839-23722-1-git-send-email-colin.king@canonical.com> Cc: jbrier@redhat.com, matt.fleming@intel.com X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: fwts-devel-bounces@lists.ubuntu.com From: Matt Fleming When calling GetVariable(), we need to fill out DataSize with the size of the Data buffer instead of using whatever garbage value is left on the stack. Furthermore, the Data buffers are not strings in any of the tests, so there's no need to NUL-terminate them or make them 1-byte larger than datasize, e.g. there's no real need to do this, uint8_t data[datasize+1; since the last element of data[] is never read back anyway. Cc: Ivan Hu Cc: Colin Ian King Cc: Alex Hung Signed-off-by: Matt Fleming Acked-by: Colin Ian King Acked-by: Alex Hung Acked-by: Ivan Hu --- src/uefi/uefirtvariable/uefirtvariable.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/uefi/uefirtvariable/uefirtvariable.c b/src/uefi/uefirtvariable/uefirtvariable.c index e8aa041..e00b343 100644 --- a/src/uefi/uefirtvariable/uefirtvariable.c +++ b/src/uefi/uefirtvariable/uefirtvariable.c @@ -89,15 +89,14 @@ static int getvariable_test(fwts_framework *fw, uint64_t datasize, uint16_t *var uint64_t status; uint8_t testdata[MAX_DATA_LENGTH]; uint64_t dataindex; - uint64_t getdatasize; + uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; - uint8_t data[datasize+1]; + uint8_t data[datasize]; uint32_t i; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; - data[dataindex] = '\0'; setvariable.VariableName = varname; setvariable.VendorGuid = >estguid1; @@ -245,7 +244,6 @@ static int getnextvariable_test(fwts_framework *fw) for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; - data[dataindex] = '\0'; setvariable.VariableName = variablenametest; setvariable.VendorGuid = >estguid1; @@ -350,11 +348,10 @@ static int setvariable_insertvariable(fwts_framework *fw, uint32_t attributes, u uint64_t status; uint64_t dataindex; - uint8_t data[datasize+1]; + uint8_t data[datasize]; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex + datadiff; - data[dataindex] = '\0'; setvariable.VariableName = varname; setvariable.VendorGuid = gtestguid; @@ -392,9 +389,9 @@ static int setvariable_checkvariable(fwts_framework *fw, uint64_t datasize, struct efi_getvariable getvariable; uint64_t status; - uint8_t testdata[datasize+1]; + uint8_t testdata[datasize]; uint64_t dataindex; - uint64_t getdatasize; + uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; getvariable.VariableName = varname; @@ -442,7 +439,7 @@ static int setvariable_checkvariable_notfound(fwts_framework *fw, uint16_t *varn uint64_t status; uint8_t testdata[MAX_DATA_LENGTH]; - uint64_t getdatasize; + uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; getvariable.VariableName = varname; @@ -472,11 +469,10 @@ static int setvariable_invalidattr(fwts_framework *fw, uint32_t attributes, uint struct efi_setvariable setvariable; uint64_t status; uint64_t dataindex; - uint8_t data[datasize+1]; + uint8_t data[datasize]; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex + datadiff; - data[dataindex] = '\0'; setvariable.VariableName = varname; setvariable.VendorGuid = gtestguid; @@ -775,7 +771,6 @@ static int getnextvariable_multitest(fwts_framework *fw, uint32_t multitesttime) for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; - data[dataindex] = '\0'; setvariable.VariableName = variablenametest; setvariable.VendorGuid = >estguid1;