diff mbox series

[v2,2/2] efi_selftest: check length report by GetNextVariableName()

Message ID 20200322095731.76982-3-xypron.glpk@gmx.de
State Accepted
Commit e1089765b5964f35a426f3abe29ba164422f4165
Headers show
Series efi_loader: correct reported length in GetNextVariable() | expand

Commit Message

Heinrich Schuchardt March 22, 2020, 9:57 a.m. UTC
GetNextVariableName should report the length of the variable including the
final 0x0000 in bytes.

Check this in the unit test.

Increase the buffer size for variable names. 40 bytes is too short.

Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
---
v2:
	Increase the buffer size for variable names.
---
 lib/efi_selftest/efi_selftest_variables.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

--
2.25.1
diff mbox series

Patch

diff --git a/lib/efi_selftest/efi_selftest_variables.c b/lib/efi_selftest/efi_selftest_variables.c
index 5d98c029b8..2c16f3db6c 100644
--- a/lib/efi_selftest/efi_selftest_variables.c
+++ b/lib/efi_selftest/efi_selftest_variables.c
@@ -11,7 +11,7 @@ 
 #include <efi_selftest.h>

 #define EFI_ST_MAX_DATA_SIZE 16
-#define EFI_ST_MAX_VARNAME_SIZE 40
+#define EFI_ST_MAX_VARNAME_SIZE 80

 static struct efi_boot_services *boottime;
 static struct efi_runtime_services *runtime;
@@ -155,8 +155,14 @@  static int execute(void)
 			return EFI_ST_FAILURE;
 		}
 		if (!memcmp(&guid, &guid_vendor0, sizeof(efi_guid_t)) &&
-		    !efi_st_strcmp_16_8(varname, "efi_st_var0"))
+		    !efi_st_strcmp_16_8(varname, "efi_st_var0")) {
 			flag |= 1;
+			if (len != 24) {
+				efi_st_error("GetNextVariableName report wrong length %u, expected 24\n",
+					     (unsigned int)len);
+				return EFI_ST_FAILURE;
+			}
+		}
 		if (!memcmp(&guid, &guid_vendor1, sizeof(efi_guid_t)) &&
 		    !efi_st_strcmp_16_8(varname, "efi_st_var1"))
 			flag |= 2;