From: Eric Haszlakiewicz Date: Tue, 5 Sep 2017 05:53:13 +0000 (-0400) Subject: Issue #173: since some sscanf implementations return 0 for non-zero inputs, directly... X-Git-Tag: json-c-0.13-20171207~55 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b2afca45602cc856f2367e77ca842606aface4ec;p=thirdparty%2Fjson-c.git Issue #173: since some sscanf implementations return 0 for non-zero inputs, directly check for "0" in the input. --- diff --git a/json_util.c b/json_util.c index 2121150a..46246688 100644 --- a/json_util.c +++ b/json_util.c @@ -265,7 +265,9 @@ int json_parse_int64(const char *buf, int64_t *retval) // Skip leading zeros, but keep at least one digit while (buf_sig_digits[0] == '0' && buf_sig_digits[1] != '\0') buf_sig_digits++; - if (num64 == 0) // assume all sscanf impl's will parse -0 to 0 + // Can't check num64==0 because some sscanf impl's parse + // non-zero values to 0. (e.g. Illumos with UINT64_MAX) + if (buf_sig_digits[0] == '0' && buf_sig_digits[1] == '\0') orig_has_neg = 0; // "-0" is the same as just plain "0" snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);