[Libguestfs] [PATCH nbdkit v2 2/6] main: Tighten up characters permitted in config keys.
Eric Blake
eblake at redhat.com
Sat Sep 8 21:05:45 UTC 2018
On 09/08/2018 03:15 AM, Richard W.M. Jones wrote:
> Previously key=value on the command line allowed the key to be pretty
> much anything that didn't contain an '=' character. Even empty
> strings were permitted.
>
> This tightens up the permitted keys so they must contain only ASCII
> alphanumeric, period, underscore or dash characters, and must not be
> an empty string.
Do we want to further restrict things to start with a letter or
underscore (and not a dot, digit, or dash)?
> ---
> docs/nbdkit-plugin.pod | 18 ++++++++++--------
> src/main.c | 32 +++++++++++++++++++++++++++++++-
> 2 files changed, 41 insertions(+), 9 deletions(-)
>
> +static int
> +is_config_key (const char *key, size_t len)
> +{
> + const char allowed[] =
> + "abcdefghijklmnopqrstuvwxyz"
> + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
> + "0123456789"
> + "._-";
> + size_t i;
> +
> + if (key[0] == '\0')
> + return 0;
> +
> + for (i = 0; i < len; ++i) {
> + if (strchr (allowed, key[i]) == NULL)
Why not use strspn and checking against the length, instead of rolling
an O(n^2) algorithm yourself? The libc version might have optimizations
to run faster, although the speed of this loop is probably in the noise.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list