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

Eric Blake eblake at redhat.com
Fri Aug 17 16:50:35 UTC 2018


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




More information about the Libguestfs mailing list