From patchwork Mon Jun 17 19:02:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1117397 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=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.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=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="XD8qwFrb"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45SLG72g3cz9s3C for ; Tue, 18 Jun 2019 05:03:25 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 38C2CC21EBE; Mon, 17 Jun 2019 19:03:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 53248C21CB1; Mon, 17 Jun 2019 19:03:15 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 64BC9C21CB1; Mon, 17 Jun 2019 19:03:14 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id 1A9B8C21BE5 for ; Mon, 17 Jun 2019 19:03:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1560798188; bh=LBUF+RGQYnWxcwq0dAu4isGrmaiV1QMOeHZ9x9L4EHw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=XD8qwFrbG1p+5pMyBOtSgL2kGq00mrrFZUMAHDdUa5YANFozWCHk7Adnsyrwzo5uX ZFlltrwZFyDLEvKk6mengb3vDKTfYw4NlEecr/F+pz9CyYePbC09i0E9W8kc4PLcha 3JJsY5DDz50khSBz7euwO9TIvWBJVRmIxNz9F0Ik= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.159.3]) by mail.gmx.com (mrgmx102 [212.227.17.174]) with ESMTPSA (Nemesis) id 0M5a9E-1iaAEe1W9o-00xaFm; Mon, 17 Jun 2019 21:03:08 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 17 Jun 2019 21:02:46 +0200 Message-Id: <20190617190246.32188-1-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:tz7n+4J31K3TcPxw3rPwIdgd+eN0bUFVY7xwG9QIRi0vlvwDCgy 7dvtG+0Be7qp7E0fxxxnICOqS5TYgIXH5MPbrRtpNhl9bCk6CAx3te27QGvTYNY3TKfMG2E jlAf0LVbspmnWfDO/cZpEWaV8YeZhFMU/zRgZuELNvbx2DeNwrt2aXhPzbfdZof2msn4etz xqdhz9/vhsyl9mnvCaApg== X-UI-Out-Filterresults: notjunk:1; V03:K0:KV8vq0o5JLo=:glprXw7WXmOyOvEuLSnRYa wjo8ZMGKrHBxqZ8eUYoKKTX8eFpUz0Lj5dZavVcW3NCh86buP4RO/0ICaT0H635LwFyOKndu7 0g5PXYCemz7l95LY8bpAJmXVl1Eda+wtg1A8MOJrMi5E59voH5WwDzSNa7UvmrenVxfLeC4a/ 9EukFZOVpHaZJRdJHZ5UsxX9NUKKuefqU8vJjznUvItJnmh7Gbaz9oMfjlaIt/smzQM/BV/Yd Xs4EaBwRD3mR9eIgTg6kpWuU6zwfdZ98npEY51RBCISRt6KgIEEHMqn5IAwAjyPmvAf7HrOk4 P3mdX6f12QnB5s5mDmxyc5L5iKT1aP7KlXgA5lplXhTBABzZX7xXutkDctBTF3MEq+7L0evjM nYPNdD1U+X9SJpIQM89TlBwW2u9pmkGYAWfVmbfAi1K29uvVmfmOvM++cKg6f0fpCy776Nk10 eNHGM1mPbzsxup6YyB43fhjcGtGvAYxzYzJNuUltcBg3saf5ejwsf43ZVXKvgSRB9J+ETn85r ubkBOKosWzQIlce3zS2CeNSOR5U1RaKb2VrNdYvhUp9tw0eW+JGjWX/nabspb0aBpC0M45X3V PZwvdRZtqPrz3rXpxvIiH+WE64/TXhYgnbGAMuP3968rHrPtxuMEdIgzAVsGCol/STkHyLS60 4WqeqIQ8W0Te6bvLnsnf8byZHmDlnL0SkAI+Edtfl0qqi23n0GrjUVr5ef3HvBdMlbL/eBkT7 WceA8zIpRM722HNSQfSEb2od1hvw92YFratoeGK0nXBq2v36qOfLDvGLawy7fROcqufi1lhcB labrVxwlx21wrmrhYvksI0s6kyvL0g/V3kkPEBJav6T9KZbNUTpnDKqWTtQyi7czwoCbc1j0j +D+IjhaCRJ9Kfd8BybXS1kPwH+85sQel7E47ZF+EVY2MsxQq9Pxkz+vOKPkuzZaMlBnIhzJi9 XsvlExC1e0oQq9TKXzmY9CDY1/x+YzAaCn0pTLgJ3dn7qrCVxrlEM Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH 1/1] efi_loader: ListPackageLists() return EFI_NOT_FOUND X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" If no matching package list is found in ListPackageLists(), return EFI_NOT_FOUND. If we do not support a package type, we can immediately leave the function. Signed-off-by: Heinrich Schuchardt --- lib/efi_loader/efi_hii.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) -- 2.20.1 diff --git a/lib/efi_loader/efi_hii.c b/lib/efi_loader/efi_hii.c index 61b71dec62..8ce526e1c8 100644 --- a/lib/efi_loader/efi_hii.c +++ b/lib/efi_loader/efi_hii.c @@ -581,18 +581,22 @@ list_package_lists(const struct efi_hii_database_protocol *this, struct efi_hii_packagelist *hii = (struct efi_hii_packagelist *)handle; int package_cnt, package_max; - efi_status_t ret = EFI_SUCCESS; + efi_status_t ret = EFI_NOT_FOUND; EFI_ENTRY("%p, %u, %pUl, %p, %p", this, package_type, package_guid, handle_buffer_length, handle); if (!handle_buffer_length || - (*handle_buffer_length && !handle)) - return EFI_EXIT(EFI_INVALID_PARAMETER); + (*handle_buffer_length && !handle)) { + ret = EFI_INVALID_PARAMETER; + goto out; + } if ((package_type != EFI_HII_PACKAGE_TYPE_GUID && package_guid) || - (package_type == EFI_HII_PACKAGE_TYPE_GUID && !package_guid)) - return EFI_EXIT(EFI_INVALID_PARAMETER); + (package_type == EFI_HII_PACKAGE_TYPE_GUID && !package_guid)) { + ret = EFI_INVALID_PARAMETER; + goto out; + } EFI_PRINT("package type=%x, guid=%pUl, length=%zu\n", (int)package_type, package_guid, *handle_buffer_length); @@ -610,7 +614,7 @@ list_package_lists(const struct efi_hii_database_protocol *this, case EFI_HII_PACKAGE_FORMS: EFI_PRINT("Form package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_STRINGS: if (!list_empty(&hii->string_tables)) break; @@ -618,19 +622,19 @@ list_package_lists(const struct efi_hii_database_protocol *this, case EFI_HII_PACKAGE_FONTS: EFI_PRINT("Font package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_IMAGES: EFI_PRINT("Image package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_SIMPLE_FONTS: EFI_PRINT("Simple font package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_DEVICE_PATH: EFI_PRINT("Device path package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_KEYBOARD_LAYOUT: if (!list_empty(&hii->keyboard_packages)) break; @@ -638,7 +642,7 @@ list_package_lists(const struct efi_hii_database_protocol *this, case EFI_HII_PACKAGE_ANIMATIONS: EFI_PRINT("Animation package not supported\n"); ret = EFI_INVALID_PARAMETER; - continue; + goto out; case EFI_HII_PACKAGE_END: case EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN: case EFI_HII_PACKAGE_TYPE_SYSTEM_END: @@ -647,13 +651,15 @@ list_package_lists(const struct efi_hii_database_protocol *this, } package_cnt++; - if (package_cnt <= package_max) + if (package_cnt <= package_max) { *handle++ = hii; - else + ret = EFI_SUCCESS; + } else { ret = EFI_BUFFER_TOO_SMALL; + } } *handle_buffer_length = package_cnt * sizeof(*handle); - +out: return EFI_EXIT(ret); }