On Mon, 2016-07-18 at 09:16 +0100, Daniel P. Berrange wrote:
On Fri, Jul 15, 2016 at 07:46:23PM +0200, Andrea Bolognani wrote:
>
> Commit 6381c89f8cce changed virConfValue to store long long
> integers instead of long integers; however, the temporary variable
> used in virConfParseLong() was not updated accordingly, causing
> trouble for 32-bit machines.
> ---
> src/util/virconf.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/util/virconf.c b/src/util/virconf.c
> index 33d6d92..66f8144 100644
> --- a/src/util/virconf.c
> +++ b/src/util/virconf.c
> @@ -364,9 +364,9 @@ virConfSaveEntry(virBufferPtr buf, virConfEntryPtr cur)
> * Returns 0 in case of success and -1 in case of error
> */
> static int
> -virConfParseLong(virConfParserCtxtPtr ctxt, long *val)
> +virConfParseLong(virConfParserCtxtPtr ctxt, long long *val)
> {
> - long l = 0;
> + long long l = 0;
> int neg = 0;
>
> if (CUR == '-') {
> @@ -476,7 +476,7 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
> virConfValuePtr ret, lst = NULL, tmp, prev;
> virConfType type = VIR_CONF_NONE;
> char *str = NULL;
> - long l = 0;
> + long long l = 0;
>
> SKIP_BLANKS;
> if (ctxt->cur >= ctxt->end) {
ACK, but perhaps you could add a test case to tests/virconftest to
validate this too.
virconftest will already fail without this patch:
4) int ... Expected -6963472309248 got -1330322432
because the call to virConfGetValueLLong() will not be able
to return the correct value. So I think we're covered.
I've pushed the whole series, thanks for reviewing it!
--
Andrea Bolognani / Red Hat / Virtualization