From patchwork Wed Jul 1 18:01:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1321127 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=GmxsdX11; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49yBCF3p82z9sR4 for ; Thu, 2 Jul 2020 18:31:37 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 32A9E821A3; Thu, 2 Jul 2020 10:22:01 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="GmxsdX11"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CEF758044A; Wed, 1 Jul 2020 20:02:13 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id A3A7381991 for ; Wed, 1 Jul 2020 20:02:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1593626526; bh=xG67ZJgEzWPSDYWAjgp0YFgENKFqvvCvGP2oMgwM38Q=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=GmxsdX11gOCtyNX7KFIGzXJR8/fwNuGjtZ9EOEjTYOyWJGBwXALRfeJWx+ZBORERl ojIXEkaorspR6qOC5Rcg8eYE+RzWYPJha/dYy2BjYky0BYe202Sm0/nl4bEYSuoK8u kQTcn6GYg4zjtrWcnrS6bvj4XBFYywPeK5U9wP2Y= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation4.fritz.box ([88.152.145.75]) by mail.gmx.com (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1N33ET-1int230oLF-013NsH; Wed, 01 Jul 2020 20:02:06 +0200 From: Heinrich Schuchardt To: AKASHI Takahiro Cc: Alexander Graf , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH 2/2] test: provide tests for efi_image_region_add() Date: Wed, 1 Jul 2020 20:01:53 +0200 Message-Id: <20200701180153.165337-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200701180153.165337-1-xypron.glpk@gmx.de> References: <20200701180153.165337-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:bV/Hb7YUGDAvddlJtkKl7WMjozvixoZK2p+w7vVM1WXahHZFe/S wFGcn8+w+gbeydfgfX7pRyHg7TLi96TJ4KRLoPlTXm0r3Tv+zy03drg/r01FAeUzeykgGxx TcEdYXzUd4HgE7HycRU2gXtbiPChJ9g4VdMKAPIYHBXH+NyNilH9KR5Y5r4zoSEpEKeXN64 d15c2senGidGIBy4wzY/w== X-UI-Out-Filterresults: notjunk:1;V03:K0:gCjqaAYt+l8=:WikDxQmKCA8KeOXDZncX/d VsrWnrPnga6+Xqd8ugm25JBo0PO4unsKccmOiMPgWv20+AeWXPfKy/Cqly+bypt6JKZVFH78H u58oN+isVZjdB2zKi844ntQ9dBx8Mga0vCqfkvFgXd6reT8N203Fds1nlZay3x0Ut/0StZWA+ q0K1DBhAo/LEIOZj1J0gipucxd+xvkx4yT7RIXZn66pBQZd4HVdxNIqUblaDe0q9/Eba/Y3Jv UvhTFFlncJYSu4F5jUoeP+4Ou9NiCKI11yrUsPBvBwoJuxCB+ba1dI09GOvX/SBmCvpIgS3hZ XKU/nhuWTHOiT+OC/RpqmXI9EClpCuT5EWb0z0qkwGa/0HpYEHkGob9SZ4lHhjoeMBzbfSGVW ZPEfPAB/yIzp5F+qcXqjVhr6ImRRTzUBUpk6B5rRchPg9UIHdRTQS74OniGhn24RYYlmzM5/5 9hdYawXPiGhSwqFR6ukPiNGh94Ztl64s+Kx5Xvzf6vG1z1de2OACpT+pTu+t4WxYVLjLgplqz /Fh3dw8WiIaB+9NhxPwEUMoZNLiB6A7nsgabmBzTN/3lTB1AeXL2Y/cPLuJHMtev/koZMjg7O zy3XzVeoHsQhf1/oTPEnagbHyTXiAhoZ8jn7M6dNap4rOHTQZdxr/7VpRcHbT2GBrR4T5I6Gd N+rCz6pWDyOkLl9owdSFeYuDrYJAKVcUTdH7g3GeuBVJdDAp4cqnCGJHqga0WXi1nPHCMUSt9 +jLZdahzSTSbAb9pzX9ZUMvC0A9GNYAq9zCvULzePNdfxVBBAo7TPCT6n3lZmM/wL4mMuC25G 3rkMCshaLWqZwQZcKbAiIEW3dFsSgY0i+E4QHFcqPTPsMZhb0h5ztS0lYHtdoBuDK+7keswgC DF1SD9vLeUSfMQkwwZqEtzMV72DT9UnvjX5b3jc2ASdRMCSG5omfjDCdEEp25O8TKG7kdakZ7 k8IuJOY/VYPNGEBqVg0GVmHi0hU2yOdscFwKpiRfG1y07DTyjlUUy66Xh+us0tOXWFJbUO8NE 106duIjfuf3jpuWXsLH5hF/tzPKKtAze3u64l738f6dTLbU9X6l/LM57csCjRX4cwrSvqwi9O qmlz9Xcz2587B1oXXjGkcvWek0KXOZw7y5cTT1p9EJxA8ZvwVMickcP2Zs5HmixjTLnixO77M X5ERR+sRIzECFvZYwx/y+MdTOkNH2Nwvr4CJaSQhzAufJ+e33AjYRe1zZSSB5Y6hyaphD5EQt YDUYDZjoCyXEUivve X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Provide unit tests for efi_image_region_add(). Signed-off-by: Heinrich Schuchardt --- MAINTAINERS | 1 + test/lib/Makefile | 1 + test/lib/efi_image_region.c | 163 ++++++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 test/lib/efi_image_region.c -- 2.27.0 diff --git a/MAINTAINERS b/MAINTAINERS index db8cecd5e0..b515bf3d93 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -633,6 +633,7 @@ F: include/pe.h F: include/asm-generic/pe.h F: lib/charset.c F: lib/efi*/ +F: test/lib/efi_* F: test/py/tests/test_efi* F: test/py/tests/test_efi*/ F: test/unicode_ut.c diff --git a/test/lib/Makefile b/test/lib/Makefile index ce9ae4a9be..6ccc2c41bc 100644 --- a/test/lib/Makefile +++ b/test/lib/Makefile @@ -3,6 +3,7 @@ # (C) Copyright 2018 # Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc obj-y += cmd_ut_lib.o +obj-$(CONFIG_EFI_SECURE_BOOT) += efi_image_region.o obj-y += hexdump.o obj-y += lmb.o obj-y += string.o diff --git a/test/lib/efi_image_region.c b/test/lib/efi_image_region.c new file mode 100644 index 0000000000..cc7bfd7bf6 --- /dev/null +++ b/test/lib/efi_image_region.c @@ -0,0 +1,163 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2020, Heinrich Schuchardt + */ + +#include +#include +#include +#include +#include + +#define UT_REG_CAPACITY 6 + +static int lib_test_efi_image_region_add(struct unit_test_state *uts) +{ + struct efi_image_regions *regs; + + regs = calloc(sizeof(*regs) + + sizeof(struct image_region) * UT_REG_CAPACITY, 1); + ut_assert(regs); + + regs->max = UT_REG_CAPACITY; + + ut_asserteq(0, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x4000, + (void *)0x3000, 1)); + ut_asserteq(0, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x3100, + (void *)0x4000, 1)); + ut_asserteq(1, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x2000, + (void *)0x3100, 1)); + ut_asserteq(2, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x1000, + (void *)0x1f00, 1)); + ut_asserteq(3, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x4000, + (void *)0x4e00, 1)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x1f00, + (void *)0x2001, 1)); + ut_asserteq(5, regs->num); + + ut_asserteq_ptr((void *)0x3100, regs->reg[0].data); + ut_asserteq(0x0f00, regs->reg[0].size); + + ut_asserteq_ptr((void *)0x2000, regs->reg[1].data); + ut_asserteq(0x1100, regs->reg[1].size); + + ut_asserteq_ptr((void *)0x1000, regs->reg[2].data); + ut_asserteq(0x0f00, regs->reg[2].size); + + ut_asserteq_ptr((void *)0x4000, regs->reg[3].data); + ut_asserteq(0x0e00, regs->reg[3].size); + + ut_asserteq_ptr((void *)0x1f00, regs->reg[4].data); + ut_asserteq(0x0101, regs->reg[4].size); + + free(regs); + + return 0; +} + +LIB_TEST(lib_test_efi_image_region_add, 0); + +static int lib_test_efi_image_region_sort(struct unit_test_state *uts) +{ + struct efi_image_regions *regs; + + regs = calloc(sizeof(*regs) + + sizeof(struct image_region) * UT_REG_CAPACITY, 1); + ut_assert(regs); + + regs->max = UT_REG_CAPACITY; + + ut_asserteq(0, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x4000, + (void *)0x3000, 0)); + ut_asserteq(0, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x3100, + (void *)0x4000, 0)); + ut_asserteq(1, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x2000, + (void *)0x3100, 0)); + ut_asserteq(2, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x1000, + (void *)0x1f00, 0)); + ut_asserteq(3, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x4000, + (void *)0x4e00, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x1f00, + (void *)0x2001, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x10ff, + (void *)0x11ff, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x0000, + (void *)0x6000, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x3100, + (void *)0x0e00, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x3200, + (void *)0x0e00, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_INVALID_PARAMETER, + efi_image_region_add(regs, (void *)0x3200, + (void *)0x0d00, 0)); + ut_asserteq(4, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x1f00, + (void *)0x2000, 0)); + ut_asserteq(5, regs->num); + ut_asserteq_64(EFI_SUCCESS, + efi_image_region_add(regs, (void *)0x4000, + (void *)0x4000, 0)); + ut_asserteq(6, regs->num); + ut_asserteq_64(EFI_OUT_OF_RESOURCES, + efi_image_region_add(regs, (void *)0x6000, + (void *)0x0100, 0)); + ut_asserteq(6, regs->num); + + ut_asserteq_ptr((void *)0x1000, regs->reg[0].data); + ut_asserteq(0x0f00, regs->reg[0].size); + + ut_asserteq_ptr((void *)0x1f00, regs->reg[1].data); + ut_asserteq(0x0100, regs->reg[1].size); + + ut_asserteq_ptr((void *)0x2000, regs->reg[2].data); + ut_asserteq(0x1100, regs->reg[2].size); + + ut_asserteq_ptr((void *)0x3100, regs->reg[3].data); + ut_asserteq(0x0f00, regs->reg[3].size); + + ut_asserteq_ptr((void *)0x4000, regs->reg[4].data); + ut_asserteq(0x0000, regs->reg[4].size); + + ut_asserteq_ptr((void *)0x4000, regs->reg[5].data); + ut_asserteq(0x0e00, regs->reg[5].size); + + free(regs); + + return 0; +} + +LIB_TEST(lib_test_efi_image_region_sort, 0);