mirror of
https://github.com/json-c/json-c.git
synced 2026-03-20 13:39:06 +08:00
Apply same EINVAL handling to json_parse_uint64() as was done for json_parse_int64(). Document that overflow/underflow for these functions is not an error, but sets errno=ERANGE.
This commit is contained in:
@@ -269,7 +269,12 @@ int json_parse_uint64(const char *buf, uint64_t *retval)
|
||||
val = strtoull(buf, &end, 10);
|
||||
if (end != buf)
|
||||
*retval = val;
|
||||
return ((val == 0 && errno != 0) || (end == buf)) ? 1 : 0;
|
||||
if ((val == 0 && errno != 0) || (end == buf))
|
||||
{
|
||||
errno = EINVAL;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef HAVE_REALLOC
|
||||
|
||||
11
json_util.h
11
json_util.h
@@ -100,8 +100,17 @@ JSON_EXPORT int json_object_to_fd(int fd, struct json_object *obj, int flags);
|
||||
*/
|
||||
JSON_EXPORT const char *json_util_get_last_err(void);
|
||||
|
||||
/* these parsing helpers return zero on success */
|
||||
/**
|
||||
* A parsing helper for integer values. Returns 0 on success,
|
||||
* with the parsed value assigned to *retval. Overflow/underflow
|
||||
* are NOT considered errors, but errno will be set to ERANGE,
|
||||
* just like the strtol/strtoll functions do.
|
||||
*/
|
||||
JSON_EXPORT int json_parse_int64(const char *buf, int64_t *retval);
|
||||
/**
|
||||
* A parsing help for integer values, providing one extra bit of
|
||||
* magnitude beyond json_parse_int64().
|
||||
*/
|
||||
JSON_EXPORT int json_parse_uint64(const char *buf, uint64_t *retval);
|
||||
/**
|
||||
* @deprecated
|
||||
|
||||
Reference in New Issue
Block a user