diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2017-10-08 06:57:28 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2017-10-09 07:00:38 +0200 |
commit | fdd04563cedb6abbc013821c123f5d7ef3078c31 (patch) | |
tree | 0c0c3e682b689f2c5cf13063fe37a49d607ad287 /lib/efi_selftest/efi_selftest_snp.c | |
parent | 10a08c4ed70e57ac570974b04844ceec13ad311a (diff) | |
download | u-boot-fdd04563cedb6abbc013821c123f5d7ef3078c31.tar.gz |
efi_selftest: error handling in SNP test
Avoid NULL pointer dereference after setup failed due to a
missing network.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'lib/efi_selftest/efi_selftest_snp.c')
-rw-r--r-- | lib/efi_selftest/efi_selftest_snp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/efi_selftest/efi_selftest_snp.c b/lib/efi_selftest/efi_selftest_snp.c index 638be0147d..bdd6ce20da 100644 --- a/lib/efi_selftest/efi_selftest_snp.c +++ b/lib/efi_selftest/efi_selftest_snp.c @@ -198,7 +198,7 @@ static int setup(const efi_handle_t handle, */ ret = boottime->set_timer(timer, EFI_TIMER_PERIODIC, 10000000); if (ret != EFI_SUCCESS) { - efi_st_error("Failed to locate simple network protocol\n"); + efi_st_error("Failed to set timer\n"); return EFI_ST_FAILURE; } /* @@ -206,6 +206,7 @@ static int setup(const efi_handle_t handle, */ ret = boottime->locate_protocol(&efi_net_guid, NULL, (void **)&net); if (ret != EFI_SUCCESS) { + net = NULL; efi_st_error("Failed to locate simple network protocol\n"); return EFI_ST_FAILURE; } @@ -273,6 +274,12 @@ static int execute(void) */ unsigned int timeout = 10; + /* Setup may have failed */ + if (!net || !timer) { + efi_st_error("Cannot execute test after setup failure\n"); + return EFI_ST_FAILURE; + } + /* * Send DHCP discover message */ |