Peter Maydell <peter.mayd...@linaro.org> writes: > 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 > > Conversely, because we call bootfile_create() once per test > but only call bootfile_delete() at the end of the whole test > run, we will leak the memory we used for bootpath when we > overwrite it. > > Handle these by: > * making bootfile_delete() handle not needing to do anything > because bootfile_create() was never called > * making bootfile_create() call bootfile_delete() first to > tidy up any previous bootfile before it creates a fresh one > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Fabiano Rosas <faro...@suse.de>