All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: "Greg Kurz" <groug@kaod.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Emanuele Giuseppe Esposito" <e.emanuelegiuseppe@gmail.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH v2 11/11] tests/9pfs: add local Tmkdir test
Date: Fri, 02 Oct 2020 17:00:46 +0200	[thread overview]
Message-ID: <5151670.eOexGVHIed@silver> (raw)
In-Reply-To: <20201002163255.67087341@bahia.lan>

On Freitag, 2. Oktober 2020 16:32:55 CEST Greg Kurz wrote:
> On Fri, 2 Oct 2020 13:56:14 +0100
> 
> Daniel P. Berrangé <berrange@redhat.com> wrote:
> > On Fri, Oct 02, 2020 at 01:51:54PM +0200, Christian Schoenebeck wrote:
> > > This test case uses the 9pfs 'local' driver to create a directory
> > > and then checks if the expected directory was actually created
> > > (as real directory) on host side.
> > > 
> > > Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
> > > ---
> > > 
> > >  tests/qtest/virtio-9p-test.c | 139 +++++++++++++++++++++++++++++++++++
> > >  1 file changed, 139 insertions(+)
> > > 
> > > diff --git a/tests/qtest/virtio-9p-test.c b/tests/qtest/virtio-9p-test.c
> > > index af7e169d3a..93161a4b35 100644
> > > --- a/tests/qtest/virtio-9p-test.c
> > > +++ b/tests/qtest/virtio-9p-test.c
> > > @@ -18,6 +18,62 @@
> > > 
> > >  #define QVIRTIO_9P_TIMEOUT_US (10 * 1000 * 1000)
> > >  static QGuestAllocator *alloc;
> > > 
> > > +/*
> > > + * Used to auto generate new fids. Start with arbitrary high value to
> > > avoid + * collision with hard coded fids in basic test code.
> > > + */
> > > +static uint32_t fid_generator = 1000;
> > > +
> > > +static uint32_t genfid(void)
> > > +{
> > > +    return fid_generator++;
> > > +}
> > > +
> > > +/**
> > > + * Splits the @a in string by @a delim into individual (non empty)
> > > strings
> > > + * and outputs them to @a out. The output array @a out is NULL
> > > terminated.
> > > + *
> > > + * Output array @a out must be freed by calling split_free().
> > > + *
> > > + * @returns number of individual elements in output array @a out
> > > (without the + *          final NULL terminating element)
> > > + */
> > > +static int split(const char *in, const char *delim, char ***out)
> > > +{
> > > +    int n = 0, i = 0;
> > > +    char *tmp, *p;
> > > +
> > > +    tmp = g_strdup(in);
> > > +    for (p = strtok(tmp, delim); p != NULL; p = strtok(NULL, delim)) {
> > > +        if (strlen(p) > 0) {
> > > +            ++n;
> > > +        }
> > > +    }
> > > +    g_free(tmp);
> > > +
> > > +    *out = g_malloc0(n * sizeof(char *) + 1); /* last element NULL
> > > delimiter */> 
> > Surely this should be  (n + 1) * sizeof(char *), because the last
> > element still needs to be large enough to hold a pointer, not a
> > single extra byte.
> 
> If you decide to keep this split() function, maybe use g_new0(char *, n + 1)
> ? This buys you the math and does type checking as an extra.

Yes, that was my plan B.

But if Daniel sais its long-term safe to pass a re-shuffled array to 
g_strfreev(), well then I go that route.

Best regards,
Christian Schoenebeck




  reply	other threads:[~2020-10-02 15:19 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-02 11:52 [PATCH v2 00/11] 9pfs: add tests using local fs driver Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 10/11] tests/9pfs: add virtio_9p_test_path() Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 03/11] libqos/qgraph: add qos_dump_graph() Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 08/11] tests/9pfs: introduce local tests Christian Schoenebeck
2020-10-02 14:26   ` Christian Schoenebeck
2020-10-02 14:35     ` Daniel P. Berrangé
2020-10-02 11:51 ` [PATCH v2 11/11] tests/9pfs: add local Tmkdir test Christian Schoenebeck
2020-10-02 12:56   ` Daniel P. Berrangé
2020-10-02 13:41     ` Christian Schoenebeck
2020-10-02 13:44       ` Daniel P. Berrangé
2020-10-02 14:09         ` Christian Schoenebeck
2020-10-02 14:23           ` Daniel P. Berrangé
2020-10-02 14:30             ` Christian Schoenebeck
2020-10-02 14:32     ` Greg Kurz
2020-10-02 15:00       ` Christian Schoenebeck [this message]
2020-10-02 11:51 ` [PATCH v2 01/11] libqos/qgraph: add qemu_name to QOSGraphNode Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 04/11] tests/qtest/qos-test: dump qos graph if verbose Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 07/11] tests/9pfs: change qtest name prefix to synth Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 06/11] tests/qtest/qos-test: dump QEMU command if verbose Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 09/11] tests/9pfs: wipe local 9pfs test directory Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 05/11] tests/qtest/qos-test: dump environment variables if verbose Christian Schoenebeck
2020-10-02 11:51 ` [PATCH v2 02/11] libqos/qgraph: add qos_node_create_driver_named() Christian Schoenebeck

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=5151670.eOexGVHIed@silver \
    --to=qemu_oss@crudebyte.com \
    --cc=berrange@redhat.com \
    --cc=e.emanuelegiuseppe@gmail.com \
    --cc=groug@kaod.org \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --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.