qmp-event: Avoid qobject_from_jsonf("%"PRId64)
authorEric Blake <eblake@redhat.com>
Wed, 23 Nov 2016 17:36:54 +0000 (11:36 -0600)
committerMarkus Armbruster <armbru@redhat.com>
Mon, 5 Dec 2016 16:09:34 +0000 (17:09 +0100)
commit043b5a49516f5037430e7864e23fc2fdd39f2b10
tree3d490ce21b9f9f9a63f3453c7e982df44bdb0a4b
parentbd8ef5060dd2124a54578241da9a572faf7658dd
qmp-event: Avoid qobject_from_jsonf("%"PRId64)

The qobject_from_jsonf() function implements a pseudo-printf
language for creating a QObject; however, it is hard-coded to
only parse a subset of formats understood by -Wformat, and is
not a straight synonym to bare printf().  In particular, any
use of an int64_t integer works only if the system's
definition of PRId64 matches what the parser expects; which
works on glibc (%lld or %ld depending on 32- vs. 64-bit) and
mingw (%I64d), but not on Mac OS (%qd).  Rather than enhance
the parser, it is just as easy to use 'long long', which we
know always works.  There are few enough callers of
qobject_from_json[fv]() that it is easy to audit that this is
the only non-testsuite caller that was actually relying on
this particular conversion.

Reported by: G 3 <programmingkidx@gmail.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1479922617-4400-2-git-send-email-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Cast tv.tv_sec, tv.tv_usec to long long for type correctness]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
qapi/qmp-event.c