All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Bulekov <alxndr@bu.edu>
To: qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Thomas Huth <thuth@redhat.com>, Alexander Bulekov <alxndr@bu.edu>,
	Bandan Das <bsd@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: [PULL 5/7] fuzz: enable dynamic args for generic-fuzz configs
Date: Wed, 20 Jan 2021 12:35:32 -0500	[thread overview]
Message-ID: <20210120173536.265601-11-alxndr@bu.edu> (raw)
In-Reply-To: <20210120173536.265601-1-alxndr@bu.edu>

For some device configurations, it is useful to configure some
resources, and adjust QEMU arguments at runtime, prior to fuzzing. This
patch adds an "argfunc" to generic the generic_fuzz_config. When
specified, it is responsible for configuring the resources and returning
a string containing the corresponding QEMU arguments. This can be useful
for targets that rely on e.g.:
 * a temporary qcow2 image
 * a temporary directory
 * an unused TCP port used to bind the VNC server

Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 tests/qtest/fuzz/generic_fuzz.c         | 10 +++++++++-
 tests/qtest/fuzz/generic_fuzz_configs.h |  1 +
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c
index deb74f15be..ee8c17a04c 100644
--- a/tests/qtest/fuzz/generic_fuzz.c
+++ b/tests/qtest/fuzz/generic_fuzz.c
@@ -933,12 +933,20 @@ static GString *generic_fuzz_cmdline(FuzzTarget *t)
 
 static GString *generic_fuzz_predefined_config_cmdline(FuzzTarget *t)
 {
+    gchar *args;
     const generic_fuzz_config *config;
     g_assert(t->opaque);
 
     config = t->opaque;
     setenv("QEMU_AVOID_DOUBLE_FETCH", "1", 1);
-    setenv("QEMU_FUZZ_ARGS", config->args, 1);
+    if (config->argfunc) {
+        args = config->argfunc();
+        setenv("QEMU_FUZZ_ARGS", args, 1);
+        g_free(args);
+    } else {
+        g_assert_nonnull(config->args);
+        setenv("QEMU_FUZZ_ARGS", config->args, 1);
+    }
     setenv("QEMU_FUZZ_OBJECTS", config->objects, 1);
     return generic_fuzz_cmdline(t);
 }
diff --git a/tests/qtest/fuzz/generic_fuzz_configs.h b/tests/qtest/fuzz/generic_fuzz_configs.h
index aa4c03f1ae..51e69c6e42 100644
--- a/tests/qtest/fuzz/generic_fuzz_configs.h
+++ b/tests/qtest/fuzz/generic_fuzz_configs.h
@@ -16,6 +16,7 @@
 
 typedef struct generic_fuzz_config {
     const char *name, *args, *objects;
+    gchar* (*argfunc)(void); /* Result must be freeable by g_free() */
 } generic_fuzz_config;
 
 const generic_fuzz_config predefined_configs[] = {
-- 
2.28.0



  parent reply	other threads:[~2021-01-20 17:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-20 17:35 [PULL 0/7] 2021-01-20 fuzzing patches Alexander Bulekov
2021-01-20 17:35 ` [PULL 1/7] docs/fuzz: fix pre-meson path Alexander Bulekov
2021-01-20 17:35 ` [PULL 1/7] fuzz: ignore address_space_map is_write flag Alexander Bulekov
2021-01-20 17:35 ` [PULL 2/7] fuzz: log the arguments used to initialize QEMU Alexander Bulekov
2021-01-20 17:35 ` [PULL 2/7] fuzz: refine the ide/ahci fuzzer configs Alexander Bulekov
2021-01-20 17:35 ` [PULL 3/7] docs/fuzz: fix pre-meson path Alexander Bulekov
2021-01-20 17:35 ` [PULL 3/7] fuzz: enable dynamic args for generic-fuzz configs Alexander Bulekov
2021-01-20 17:35 ` [PULL 4/7] docs/fuzz: add some information about OSS-Fuzz Alexander Bulekov
2021-01-20 17:35 ` [PULL 4/7] fuzz: log the arguments used to initialize QEMU Alexander Bulekov
2021-01-20 17:35 ` [PULL 5/7] fuzz: add virtio-9p configurations for fuzzing Alexander Bulekov
2021-01-20 17:35 ` Alexander Bulekov [this message]
2021-01-20 17:35 ` [PULL 6/7] docs/fuzz: add some information about OSS-Fuzz Alexander Bulekov
2021-01-20 17:35 ` [PULL 6/7] fuzz: ignore address_space_map is_write flag Alexander Bulekov
2021-01-20 17:35 ` [PULL 7/7] fuzz: add virtio-9p configurations for fuzzing Alexander Bulekov
2021-01-20 17:35 ` [PULL 7/7] fuzz: refine the ide/ahci fuzzer configs Alexander Bulekov
2021-01-20 17:41 ` [PULL 0/7] 2021-01-20 fuzzing patches Alexander Bulekov
2021-01-20 17:44 Alexander Bulekov
2021-01-20 17:44 ` [PULL 5/7] fuzz: enable dynamic args for generic-fuzz configs Alexander Bulekov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210120173536.265601-11-alxndr@bu.edu \
    --to=alxndr@bu.edu \
    --cc=bsd@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.