On 16/04/2018 13:17, Daniel P. Berrangé wrote:
> A user trying out SMBIOS "OEM strings" feature reported that the data
> they are exposing to the guest was truncated at 1023 bytes, which breaks
> the app consuming in the guest. After searching for the cause I
> eventually found that the QemuOpts parsing is using fixed length 1024
> byte array for option values and 128 byte array for key names.
> 
> We can certainly debate whether it is sane to have such long command
> line argument values (it is not sane), but if the OS was capable of
> exec'ing QEMU with such an ARGV array, there is little good reason for
> imposing an artificial length restriction when parsing it. Even worse is
> that we silently truncate without reporting an error when hitting limits
> resulting in a semantically incorrect behaviour, possibly even leading
> to security flaws depending on the data that was truncated.
> 
> Thus this patch series removes the artificial length limits by killing
> the fixed length buffers.
> 
> Separately I intend to make it possible to read "OEM strings" data from
> a file, to avoid need to have long command line args.
> 
> Daniel P. Berrangé (3):
>   accel: use g_strsplit for parsing accelerator names
>   opts: don't silently truncate long parameter keys
>   opts: don't silently truncate long option values
> 
>  accel/accel.c          |  16 +++---
>  hw/i386/multiboot.c    |  33 +++++++----
>  include/qemu/option.h  |   3 +-
>  tests/test-qemu-opts.c |  18 ------
>  util/qemu-option.c     | 150 
> ++++++++++++++++++++++++++-----------------------
>  5 files changed, 108 insertions(+), 112 deletions(-)
> 

Queued, thanks.

Paolo

Reply via email to