tests/qtest/migration-test: Fix bootfile cleanup handling
If you invoke the migration-test binary in such a way that it doesn't run any tests, then we never call bootfile_create(), and at the end of main() bootfile_delete() will try to unlink(NULL), which is not valid. This can happen if for instance you tell the test binary to run a subset of tests that turns out to be empty, like this: (cd build/asan && QTEST_QEMU_BINARY=./qemu-system-x86_64 ./tests/qtest/migration-test --tap -k -p bang) # random seed: R02S6501b289ff8ced4231ba452c3a87bc6f # Skipping test: userfaultfd not available 1..0 ../../tests/qtest/migration-test.c:182:12: runtime error: null pointer passed as argument 1, which is declared to never be null /usr/include/unistd.h:858:48: note: nonnull attribute specified here Handle this by making bootfile_delete() not needing to do anything because bootfile_create() was never called. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Fabiano Rosas <farosas@suse.de> [fixed conflict with aee07f2563] Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
ceb1ab1af4
commit
d278455eb1
@ -145,6 +145,9 @@ static char *bootpath;
|
|||||||
|
|
||||||
static void bootfile_delete(void)
|
static void bootfile_delete(void)
|
||||||
{
|
{
|
||||||
|
if (!bootpath) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
unlink(bootpath);
|
unlink(bootpath);
|
||||||
g_free(bootpath);
|
g_free(bootpath);
|
||||||
bootpath = NULL;
|
bootpath = NULL;
|
||||||
@ -156,10 +159,7 @@ static void bootfile_create(char *dir, bool suspend_me)
|
|||||||
unsigned char *content;
|
unsigned char *content;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if (bootpath) {
|
bootfile_delete();
|
||||||
bootfile_delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
bootpath = g_strdup_printf("%s/bootsect", dir);
|
bootpath = g_strdup_printf("%s/bootsect", dir);
|
||||||
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
/* the assembled x86 boot sector should be exactly one sector large */
|
/* the assembled x86 boot sector should be exactly one sector large */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user