On Sun, Apr 21, 2024 at 08:15:42PM +0100, Richard W.M. Jones wrote:
> The plugin/filter short name detection is very liberal, reserving only
> '.' and '/'.  Thus, at least in theory, short plugin names containing
> almost arbitrary symbols and characters are permitted.
> 
> Backslash ought to have been reserved when we added Windows support.
> 
> We should probably reserve more characters, but in this commit I only
> reserve:
> 
>  * backslash (ie. directory separator on Windows)
>  * ':' and ';' (common path separators)
>  * '=' (used in nbdkit parameters)

Oh, I reviewed v1 before you added '=' to the reject list in v2.

>  * space and comma (commonly used to separate lists)
>  * non-printable ASCII characters
> 
> Also DIR_SEPARATOR_STR, but that's likely to be already covered by the
> other tests so probably does nothing here.
> 
> This commit is mainly about tightening up corner cases with possible
> security implications, for example if you managed to trick a program
> to invoke 'nbdkit "plugin param"' that might have an ambiguous parsing
> that you could use to your advantage.  It should have no effect on
> normal, non-adversarial usage.
> ---
>  server/options.h | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 

> +
> +  for (i = 0; i < n; ++i) {
> +    switch (filename[i]) {
> +    case '\0'...31: case 127:   /* non-printable ASCII */

The comment about ranged case label is still present (I'm okay whether
you keep it in or explode it to long-hand).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org
_______________________________________________
Libguestfs mailing list -- guestfs@lists.libguestfs.org
To unsubscribe send an email to guestfs-le...@lists.libguestfs.org

Reply via email to