dummyflasher.c: Prevent use-after-free bug

The memory for the `status` string is aliased by the `endptr` pointer.
Moreover, `errno` could have been modified by the call to `free()`.
Therefore, only free the former when there are no more uses of either.

Change-Id: I1b56834004fe18918213a7df0a09a8a7ecb56985
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54909
Original-Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Original-Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71363
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/dummyflasher.c b/dummyflasher.c
index 3a78595..4b5a2ac 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -373,12 +373,13 @@
 	if (status) {
 		errno = 0;
 		data->emu_status = strtoul(status, &endptr, 0);
-		free(status);
 		if (errno != 0 || status == endptr) {
+			free(status);
 			msg_perr("Error: initial status register specified, "
 				 "but the value could not be converted.\n");
 			return 1;
 		}
+		free(status);
 		msg_pdbg("Initial status register is set to 0x%02x.\n",
 			 data->emu_status);
 	}