efi_selftest: error handling in SNP test
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 8 Oct 2017 04:57:28 +0000 (06:57 +0200)
committerAlexander Graf <agraf@suse.de>
Mon, 9 Oct 2017 05:00:38 +0000 (07:00 +0200)
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>
lib/efi_selftest/efi_selftest_snp.c

index 638be01..bdd6ce2 100644 (file)
@@ -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
         */