[libvirt PATCH v5 1/7] Add a PCI/PCIe device VPD Parser
Dmitrii Shcherbakov
dmitrii.shcherbakov at canonical.com
Fri Oct 1 17:26:40 UTC 2021
Thanks a lot for the review!
Responses inline - ACKs to address in v6.
On Fri, Oct 1, 2021 at 12:58 PM Daniel P. Berrangé <berrange at redhat.com> wrote:
> I don't know what the thread concurrency rules are of the callers of
> this code, but regardless we generally aim to make any one-time
> initializers thread safe by default.
>
> Recommend using VIR_ONCE_GLOBAL_INIT to do one-time init.
>
Ack, will address in v6.
> IIUC, this hash table is created once and never changed. I'm
> not seeing a clear need for g_strdup here. Can't we just
> directly use the constant string as the key ?
Good point, no need to store copies of constant strings here.
> > + if (!g_regex_match_simple("^[a-zA-Z0-9\\-_\\s,.:=]*$", value, 0, 0)) {
>
> Since you're only trying to validate a set of permitted characters,
> it is sufficient to use strspn() for this task.
>
> eg what we do in vsh.c is
>
> /* Characters permitted in $EDITOR environment variable and temp filename. */
> #define ACCEPTED_CHARS \
> "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-/_.:@"
>
> if (strspn(editor, ACCEPTED_CHARS) != strlen(editor)) {
> ....error...
Ack, seems like a cheaper way to do this than with regex.
> > +G_BEGIN_DECLS;
>
> This is not required in libvirt internal code, since we never use C++
> internally.
Ack, will remove in v6.
> > + if (ftruncate(fd, len) != 0) {
> > + VIR_TEST_DEBUG("%s: %s", "failed to ftruncate an anonymous file",
> > + g_strerror(errno));
> > + goto cleanup;
> > + }
>
> Since it is a new temporary file it is guaranteed zero length, so
> this should be redundant AFAICT.
Ack, will address in v6.
More information about the libvir-list
mailing list