Check if GetVariable writes past the end of the output data buffer.

Signed-off-by: Ivan Gorinov <ivan.gori...@intel.com>
---
 lib/efi_selftest/efi_selftest_variables.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/lib/efi_selftest/efi_selftest_variables.c 
b/lib/efi_selftest/efi_selftest_variables.c
index f5e8eb6..8a02dbc 100644
--- a/lib/efi_selftest/efi_selftest_variables.c
+++ b/lib/efi_selftest/efi_selftest_variables.c
@@ -72,6 +72,22 @@ static int execute(void)
                efi_st_error("SetVariable failed\n");
                return EFI_ST_FAILURE;
        }
+       data[3] = 0xff;
+       len = 3;
+       ret = runtime->get_variable(L"efi_st_var0", &guid_vendor0,
+                                   &attr, &len, data);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("GetVariable failed\n");
+               return EFI_ST_FAILURE;
+       }
+       if (efi_st_memcmp(data, v + 4, 3)) {
+               efi_st_error("GetVariable returned wrong value\n");
+               return EFI_ST_FAILURE;
+       }
+       if (data[3] != 0xff) {
+               efi_st_error("GetVariable wrote past the end of the buffer\n");
+               return EFI_ST_FAILURE;
+       }
        /* Set variable 1 */
        ret = runtime->set_variable(L"efi_st_var1", &guid_vendor1,
                                    EFI_VARIABLE_BOOTSERVICE_ACCESS,
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to