[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