[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libguestfs] [PATCH v3 1/4] mltools: Rename Yajl module as JSON_parser and move to common/mltools.

On 08/17/2018 10:48 AM, Richard W.M. Jones wrote:
On Fri, Aug 17, 2018 at 10:30:35AM -0500, Eric Blake wrote:
On 08/17/2018 10:16 AM, Richard W.M. Jones wrote:
Commit bd1c5c9f4dcf38458099db8a0bf4659a07ef055d changed all the code
to use Jansson instead of yajl.  However it didn't change the OCaml
API name (which was still Yajl).

Are you aware that Jansson can't parse all JSON generated by qemu,
and that the developers of Jansson did not seem sympathetic to
patches that would make it possible?  Libvirt recently reverted
their use of Jansson because of its inability to deal with unsigned
64-bit numbers (and sadly, RFC7159 does not define bounds for what
forms valid JSON numbers, but merely leaves it up to implementations
to decide for themselves).

Yes, painfully aware.  Not sure what to do about it however, since the
alternative (ie. switching back to yajl) as libvirt did is not going
to be pleasant.

Currently we're OK as long as disk sizes don't exceed 8 petabytes, if
my quick calculation is correct.

The problem comes anywhere that qemu outputs an unsigned 64-bit number as unsigned AND where that value is larger than INT64_MAX (jansson uses strtoll, rather than strtoull). But since disk sizes cannot exceed off_t, which is a signed 64-bit number, it does not matter whether qemu outputs those as signed or unsigned - they will still be parseable as a signed number. Thus, you are correct that disk sizes in qemu output won't trigger the Jansson limitation.

Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]