Message ID | 20210412143050.725918-1-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Series | [v3] libqtest: refuse QTEST_QEMU_BINARY=qemu-kvm | expand |
On 12/04/2021 16.30, Stefan Hajnoczi wrote: > Some downstreams rename the QEMU binary to "qemu-kvm". This breaks > qtest_get_arch(), which attempts to parse the target architecture from > the QTEST_QEMU_BINARY environment variable. > > Print an error instead of returning the architecture "kvm". Things fail > in weird ways when the architecture string is bogus. > > Arguably qtests should always be run in a build directory instead of > against an installed QEMU. In any case, printing a clear error when this > happens is helpful. > > Since this is an error that is triggered by the user and not a test > failure, use exit(1) instead of abort(). Change the existing abort() > call in qtest_get_arch() to exit(1) too for the same reason and to be > consistent. > > Reported-by: Qin Wang <qinwang@rehdat.com> > Cc: Emanuele Giuseppe Esposito <eesposit@redhat.com> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > v3: > * Add newline to wrap error message output at 80 columns [Thomas] > * Drop information about working around this using a symlink [Thomas] > * Use exit(1) instead of abort() [Thomas] > > tests/qtest/libqtest.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c > index 71e359efcd..825b13a44c 100644 > --- a/tests/qtest/libqtest.c > +++ b/tests/qtest/libqtest.c > @@ -907,7 +907,14 @@ const char *qtest_get_arch(void) > > if (!end) { > fprintf(stderr, "Can't determine architecture from binary name.\n"); > - abort(); > + exit(1); > + } > + > + if (!strstr(qemu, "-system-")) { > + fprintf(stderr, "QTEST_QEMU_BINARY must end with *-system-<arch> " > + "where 'arch' is the target\narchitecture (x86_64, aarch64, " > + "etc).\n"); > + exit(1); > } > > return end + 1; > Reviewed-by: Thomas Huth <thuth@redhat.com>
On 12/04/2021 16:30, Stefan Hajnoczi wrote: > Some downstreams rename the QEMU binary to "qemu-kvm". This breaks > qtest_get_arch(), which attempts to parse the target architecture from > the QTEST_QEMU_BINARY environment variable. > > Print an error instead of returning the architecture "kvm". Things fail > in weird ways when the architecture string is bogus. > > Arguably qtests should always be run in a build directory instead of > against an installed QEMU. In any case, printing a clear error when this > happens is helpful. > > Since this is an error that is triggered by the user and not a test > failure, use exit(1) instead of abort(). Change the existing abort() > call in qtest_get_arch() to exit(1) too for the same reason and to be > consistent. > > Reported-by: Qin Wang <qinwang@rehdat.com> > Cc: Emanuele Giuseppe Esposito <eesposit@redhat.com> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > v3: > * Add newline to wrap error message output at 80 columns [Thomas] > * Drop information about working around this using a symlink [Thomas] > * Use exit(1) instead of abort() [Thomas] > > tests/qtest/libqtest.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c > index 71e359efcd..825b13a44c 100644 > --- a/tests/qtest/libqtest.c > +++ b/tests/qtest/libqtest.c > @@ -907,7 +907,14 @@ const char *qtest_get_arch(void) > > if (!end) { > fprintf(stderr, "Can't determine architecture from binary name.\n"); > - abort(); > + exit(1); > + } > + > + if (!strstr(qemu, "-system-")) { > + fprintf(stderr, "QTEST_QEMU_BINARY must end with *-system-<arch> " > + "where 'arch' is the target\narchitecture (x86_64, aarch64, " > + "etc).\n"); > + exit(1); > } > > return end + 1; > Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index 71e359efcd..825b13a44c 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -907,7 +907,14 @@ const char *qtest_get_arch(void) if (!end) { fprintf(stderr, "Can't determine architecture from binary name.\n"); - abort(); + exit(1); + } + + if (!strstr(qemu, "-system-")) { + fprintf(stderr, "QTEST_QEMU_BINARY must end with *-system-<arch> " + "where 'arch' is the target\narchitecture (x86_64, aarch64, " + "etc).\n"); + exit(1); } return end + 1;
Some downstreams rename the QEMU binary to "qemu-kvm". This breaks qtest_get_arch(), which attempts to parse the target architecture from the QTEST_QEMU_BINARY environment variable. Print an error instead of returning the architecture "kvm". Things fail in weird ways when the architecture string is bogus. Arguably qtests should always be run in a build directory instead of against an installed QEMU. In any case, printing a clear error when this happens is helpful. Since this is an error that is triggered by the user and not a test failure, use exit(1) instead of abort(). Change the existing abort() call in qtest_get_arch() to exit(1) too for the same reason and to be consistent. Reported-by: Qin Wang <qinwang@rehdat.com> Cc: Emanuele Giuseppe Esposito <eesposit@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- v3: * Add newline to wrap error message output at 80 columns [Thomas] * Drop information about working around this using a symlink [Thomas] * Use exit(1) instead of abort() [Thomas] tests/qtest/libqtest.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)