From 6d3cac6f3a6e977e9330c9c06514a372ade170a2 Mon Sep 17 00:00:00 2001
From: Emekcan <emekcan.aras@arm.com>
Date: Wed, 2 Nov 2022 09:58:27 +0000
Subject: [PATCH] smm_gateway: add checks for null attributes

As par EDK-2 and EDK-2 test code, setVariable() with 0 
attributes means a delete variable request. Currently, 
smm gatway doesn't handle this scenario. This commit adds
that support.

Upstream-Status: Pending
Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
---
 components/service/smm_variable/backend/uefi_variable_store.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/service/smm_variable/backend/uefi_variable_store.c b/components/service/smm_variable/backend/uefi_variable_store.c
index 6c3b9ed8..a691dc5d 100644
--- a/components/service/smm_variable/backend/uefi_variable_store.c
+++ b/components/service/smm_variable/backend/uefi_variable_store.c
@@ -202,9 +202,9 @@ efi_status_t uefi_variable_store_set_variable(
 		if (info->is_variable_set) {
 
 			/* It's a request to update to an existing variable */
-			if (!(var->Attributes &
+			if (!(var->Attributes) || (!(var->Attributes &
 				(EFI_VARIABLE_APPEND_WRITE | EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS_MASK)) &&
-				!var->DataSize) {
+				!var->DataSize)) {
 
 				/* It's a remove operation - for a remove, the variable
 				 * data must be removed from the storage backend before
-- 
2.17.1

