From: Heinrich Schuchardt <xypron.glpk@gmx.de>
Date: Thu, 26 Sep 2019 19:40:18 +0000 (+0200)
Subject: efi_loader: appending to non-existent variable
X-Git-Tag: v2025.01-rc5-pxa1908~2761^2~7
X-Git-Url: http://git.dujemihanovic.xyz/img/static/git-logo.png?a=commitdiff_plain;h=709292a63afc60bc840493315acf18c6c5e27eb4;p=u-boot.git

efi_loader: appending to non-existent variable

Appending to a non-existent variable must result in an error of type
EFI_NOT_FOUND.

Fixes: 09c76b79a9db ("efi_loader: SetVariable() deleting variables")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---

diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c
index 4c554c546b..d0daf7bdeb 100644
--- a/lib/efi_loader/efi_variable.c
+++ b/lib/efi_loader/efi_variable.c
@@ -478,10 +478,12 @@ efi_status_t EFIAPI efi_set_variable(u16 *variable_name,
 			old_size = 0;
 		}
 	} else {
-		if ((data_size == 0 &&
-		     !(attributes & EFI_VARIABLE_APPEND_WRITE)) ||
-		    !attributes) {
-			/* delete, but nothing to do */
+		if (data_size == 0 || !attributes ||
+		    (attributes & EFI_VARIABLE_APPEND_WRITE)) {
+			/*
+			 * Trying to delete or to update a non-existent
+			 * variable.
+			 */
 			ret = EFI_NOT_FOUND;
 			goto out;
 		}