[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/23] qtest: add fuzz test case
From: |
Thomas Huth |
Subject: |
[PULL 06/23] qtest: add fuzz test case |
Date: |
Tue, 13 Oct 2020 12:55:10 +0200 |
From: Li Qiang <liq3ea@163.com>
Currently the device fuzzer finds more and more issues.
For every fuzz case, we need not only the fixes but also
the corresponding test case. We can analysis the reproducer
for every case and find what happened in where and write
a beautiful test case. However the raw data of reproducer is not
friendly to analysis. It will take a very long time, even far more
than the fixes itself. So let's create a new file to hold all of
the fuzz test cases and just use the raw data to act as the test
case. This way nobody will be afraid of writing a test case for
the fuzz reproducer.
This patch adds the issue LP#1878263 test case.
Signed-off-by: Li Qiang <liq3ea@163.com>
Message-Id: <20200921160605.19329-1-liq3ea@163.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alexander Bulekov <alxndr@bu.edu>
[thuth: Slightly adjusted commit message, removed empty lines]
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qtest/fuzz-test.c | 49 +++++++++++++++++++++++++++++++++++++++++
tests/qtest/meson.build | 1 +
2 files changed, 50 insertions(+)
create mode 100644 tests/qtest/fuzz-test.c
diff --git a/tests/qtest/fuzz-test.c b/tests/qtest/fuzz-test.c
new file mode 100644
index 0000000000..2f38bb1ec2
--- /dev/null
+++ b/tests/qtest/fuzz-test.c
@@ -0,0 +1,49 @@
+/*
+ * QTest testcase for fuzz case
+ *
+ * Copyright (c) 2020 Li Qiang <liq3ea@gmail.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+
+#include "libqos/libqtest.h"
+
+/*
+ * This used to trigger the assert in scsi_dma_complete
+ * https://bugs.launchpad.net/qemu/+bug/1878263
+ */
+static void test_lp1878263_megasas_zero_iov_cnt(void)
+{
+ QTestState *s;
+
+ s = qtest_init("-nographic -monitor none -serial none "
+ "-M q35 -device megasas -device scsi-cd,drive=null0 "
+ "-blockdev driver=null-co,read-zeroes=on,node-name=null0");
+ qtest_outl(s, 0xcf8, 0x80001818);
+ qtest_outl(s, 0xcfc, 0xc101);
+ qtest_outl(s, 0xcf8, 0x8000181c);
+ qtest_outl(s, 0xcf8, 0x80001804);
+ qtest_outw(s, 0xcfc, 0x7);
+ qtest_outl(s, 0xcf8, 0x8000186a);
+ qtest_writeb(s, 0x14, 0xfe);
+ qtest_writeb(s, 0x0, 0x02);
+ qtest_outb(s, 0xc1c0, 0x17);
+ qtest_quit(s);
+}
+
+int main(int argc, char **argv)
+{
+ const char *arch = qtest_get_arch();
+
+ g_test_init(&argc, &argv, NULL);
+
+ if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
+ qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt",
+ test_lp1878263_megasas_zero_iov_cnt);
+ }
+
+ return g_test_run();
+}
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index 0f32ca0895..6c6bfb5e2e 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -54,6 +54,7 @@ qtests_i386 = \
'bios-tables-test',
'rtc-test',
'i440fx-test',
+ 'fuzz-test',
'fw_cfg-test',
'device-plug-test',
'drive_del-test',
--
2.18.2
- [PULL 00/23] qtests, gitlab-CI and misc patches, Thomas Huth, 2020/10/13
- [PULL 01/23] tests/qtest: Replace magic value by NANOSECONDS_PER_SECOND definition, Thomas Huth, 2020/10/13
- [PULL 02/23] gitlab-ci.yml: Only run one test-case per fuzzer, Thomas Huth, 2020/10/13
- [PULL 03/23] Acceptance tests: bump pycdlib version for easier installation, Thomas Huth, 2020/10/13
- [PULL 04/23] Acceptance tests: do not show canceled test logs on GitLab CI, Thomas Huth, 2020/10/13
- [PULL 05/23] Acceptance tests: show test report on GitLab CI, Thomas Huth, 2020/10/13
- [PULL 06/23] qtest: add fuzz test case,
Thomas Huth <=
- [PULL 08/23] softmmu/vl: Be less verbose about missing KVM when running the qtests, Thomas Huth, 2020/10/13
- [PULL 13/23] configure: fixes indent of $meson setup, Thomas Huth, 2020/10/13
- [PULL 12/23] docs/system/deprecated: Mark the 'moxie' CPU as deprecated, Thomas Huth, 2020/10/13
- [PULL 09/23] Add a comment in bios-tables-test.c to clarify the reason behind approach, Thomas Huth, 2020/10/13
- [PULL 10/23] MAINTAINERS: Ignore bios-tables-test in the qtest section, Thomas Huth, 2020/10/13
- [PULL 11/23] Remove superfluous .gitignore files, Thomas Huth, 2020/10/13
- [PULL 15/23] gitlab: add a CI job to validate the DCO sign off, Thomas Huth, 2020/10/13
- [PULL 07/23] tests/migration: Allow longer timeouts, Thomas Huth, 2020/10/13
- [PULL 14/23] gitlab: add a CI job for running checkpatch.pl, Thomas Huth, 2020/10/13
- [PULL 16/23] gitlab: assign python helper files to GitLab maintainers section, Thomas Huth, 2020/10/13