From: Heinrich Schuchardt Date: Fri, 21 Dec 2018 23:37:41 +0000 (+0100) Subject: efi_selftest: block device: avoid read after free X-Git-Tag: v2019.01-rc3~14^2~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=05aceb2b1c9d88aafcb8dfbedb24742a24d986ba;p=oweals%2Fu-boot.git efi_selftest: block device: avoid read after free Reading the position in a file after closing the same results in a read after free. Correct the sequence in the test. Reported-by: Marek Vasut Signed-off-by: Heinrich Schuchardt Signed-off-by: Alexander Graf --- diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c index d4e4fac1c7..f038da9f19 100644 --- a/lib/efi_selftest/efi_selftest_block_device.c +++ b/lib/efi_selftest/efi_selftest_block_device.c @@ -445,11 +445,6 @@ static int execute(void) efi_st_error("Failed to write file\n"); return EFI_ST_FAILURE; } - ret = file->close(file); - if (ret != EFI_SUCCESS) { - efi_st_error("Failed to close file\n"); - return EFI_ST_FAILURE; - } ret = file->getpos(file, &pos); if (ret != EFI_SUCCESS) { efi_st_error("GetPosition failed\n"); @@ -460,6 +455,11 @@ static int execute(void) (unsigned int)pos); return EFI_ST_FAILURE; } + ret = file->close(file); + if (ret != EFI_SUCCESS) { + efi_st_error("Failed to close file\n"); + return EFI_ST_FAILURE; + } /* Verify file */ boottime->set_mem(buf, sizeof(buf), 0);