diff options
-rw-r--r-- | src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c | 2 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c | 2 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup-tpm2.c | 2 | ||||
-rw-r--r-- | src/home/homectl.c | 4 | ||||
-rw-r--r-- | src/network/networkctl.c | 4 | ||||
-rw-r--r-- | src/network/networkd-json.c | 2 | ||||
-rw-r--r-- | src/nspawn/nspawn-oci.c | 56 | ||||
-rw-r--r-- | src/nss-resolve/nss-resolve.c | 6 | ||||
-rw-r--r-- | src/resolve/resolved-varlink.c | 2 | ||||
-rw-r--r-- | src/shared/json-internal.h | 4 | ||||
-rw-r--r-- | src/shared/json.c | 82 | ||||
-rw-r--r-- | src/shared/json.h | 26 | ||||
-rw-r--r-- | src/shared/user-record.c | 16 | ||||
-rw-r--r-- | src/test/test-json.c | 24 | ||||
-rw-r--r-- | src/test/test-varlink.c | 2 |
15 files changed, 113 insertions, 121 deletions
diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c index 5471cb35b6..e2d28a5dda 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c @@ -200,7 +200,7 @@ _public_ int cryptsetup_token_validate( } JSON_VARIANT_ARRAY_FOREACH(e, w) { - uintmax_t u; + uint64_t u; if (!json_variant_is_number(e)) { crypt_log_debug(cd, "TPM2 PCR is not a number."); diff --git a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c index 4167275317..3d39dfa884 100644 --- a/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c +++ b/src/cryptsetup/cryptsetup-tokens/luks2-tpm2.c @@ -78,7 +78,7 @@ int parse_luks2_tpm2_data( return -EINVAL; JSON_VARIANT_ARRAY_FOREACH(e, w) { - uintmax_t u; + uint64_t u; if (!json_variant_is_number(e)) return -EINVAL; diff --git a/src/cryptsetup/cryptsetup-tpm2.c b/src/cryptsetup/cryptsetup-tpm2.c index 8757212969..cb139518a7 100644 --- a/src/cryptsetup/cryptsetup-tpm2.c +++ b/src/cryptsetup/cryptsetup-tpm2.c @@ -116,7 +116,7 @@ int find_tpm2_auto_data( assert(pcr_mask == 0); JSON_VARIANT_ARRAY_FOREACH(e, w) { - uintmax_t u; + uint64_t u; if (!json_variant_is_number(e)) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), diff --git a/src/home/homectl.c b/src/home/homectl.c index a4f3116544..f6a2199395 100644 --- a/src/home/homectl.c +++ b/src/home/homectl.c @@ -759,7 +759,7 @@ static int update_last_change(JsonVariant **v, bool with_password, bool override c = json_variant_by_key(*v, "lastChangeUSec"); if (c) { - uintmax_t u; + uint64_t u; if (!override) goto update_password; @@ -782,7 +782,7 @@ update_password: c = json_variant_by_key(*v, "lastPasswordChangeUSec"); if (c) { - uintmax_t u; + uint64_t u; if (!override) return 0; diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 2d0866a81d..68dd4b185c 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -133,9 +133,9 @@ static int dump_link_description(char **patterns) { return log_oom(); JSON_VARIANT_ARRAY_FOREACH(i, json_variant_by_key(v, "Interfaces")) { - char ifindex_str[DECIMAL_STR_MAX(intmax_t)]; + char ifindex_str[DECIMAL_STR_MAX(int64_t)]; const char *name; - intmax_t index; + int64_t index; size_t pos; name = json_variant_string(json_variant_by_key(i, "Name")); diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index 7148c2ee14..4828a0ed50 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -94,7 +94,7 @@ int link_build_json(Link *link, JsonVariant **ret) { } static int link_json_compare(JsonVariant * const *a, JsonVariant * const *b) { - intmax_t index_a, index_b; + int64_t index_a, index_b; assert(a && *a); assert(b && *b); diff --git a/src/nspawn/nspawn-oci.c b/src/nspawn/nspawn-oci.c index 9912c5acbb..9e59d6a814 100644 --- a/src/nspawn/nspawn-oci.c +++ b/src/nspawn/nspawn-oci.c @@ -99,7 +99,7 @@ static int oci_terminal(const char *name, JsonVariant *v, JsonDispatchFlags flag static int oci_console_dimension(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { unsigned *u = userdata; - uintmax_t k; + uint64_t k; assert(u); @@ -226,7 +226,7 @@ static int oci_rlimit_value(const char *name, JsonVariant *v, JsonDispatchFlags z = (rlim_t) json_variant_unsigned(v); - if ((uintmax_t) z != json_variant_unsigned(v)) + if ((uint64_t) z != json_variant_unsigned(v)) return json_log(v, flags, SYNTHETIC_ERRNO(EINVAL), "rlimits limit out of range, refusing."); } @@ -346,7 +346,7 @@ static int oci_capabilities(const char *name, JsonVariant *v, JsonDispatchFlags static int oci_oom_score_adj(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { Settings *s = userdata; - intmax_t k; + int64_t k; assert(s); @@ -363,14 +363,14 @@ static int oci_oom_score_adj(const char *name, JsonVariant *v, JsonDispatchFlags static int oci_uid_gid(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { uid_t *uid = userdata, u; - uintmax_t k; + uint64_t k; assert(uid); assert_cc(sizeof(uid_t) == sizeof(gid_t)); k = json_variant_unsigned(v); u = (uid_t) k; - if ((uintmax_t) u != k) + if ((uint64_t) u != k) return json_log(v, flags, SYNTHETIC_ERRNO(EINVAL), "UID/GID out of range: %ji", k); @@ -698,7 +698,7 @@ static int oci_namespaces(const char *name, JsonVariant *v, JsonDispatchFlags fl static int oci_uid_gid_range(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { uid_t *uid = userdata, u; - uintmax_t k; + uint64_t k; assert(uid); assert_cc(sizeof(uid_t) == sizeof(gid_t)); @@ -709,7 +709,7 @@ static int oci_uid_gid_range(const char *name, JsonVariant *v, JsonDispatchFlags k = json_variant_unsigned(v); u = (uid_t) k; - if ((uintmax_t) u != k) + if ((uint64_t) u != k) return json_log(v, flags, SYNTHETIC_ERRNO(ERANGE), "UID/GID out of range: %ji", k); if (u == 0) @@ -803,7 +803,7 @@ static int oci_device_type(const char *name, JsonVariant *v, JsonDispatchFlags f static int oci_device_major(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { unsigned *u = userdata; - uintmax_t k; + uint64_t k; assert_se(u); @@ -818,7 +818,7 @@ static int oci_device_major(const char *name, JsonVariant *v, JsonDispatchFlags static int oci_device_minor(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { unsigned *u = userdata; - uintmax_t k; + uint64_t k; assert_se(u); @@ -833,14 +833,14 @@ static int oci_device_minor(const char *name, JsonVariant *v, JsonDispatchFlags static int oci_device_file_mode(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { mode_t *mode = userdata, m; - uintmax_t k; + uint64_t k; assert(mode); k = json_variant_unsigned(v); m = (mode_t) k; - if ((m & ~07777) != 0 || (uintmax_t) m != k) + if ((m & ~07777) != 0 || (uint64_t) m != k) return json_log(v, flags, SYNTHETIC_ERRNO(ERANGE), "fileMode out of range, refusing."); @@ -1175,7 +1175,7 @@ static int oci_cgroup_devices(const char *name, JsonVariant *v, JsonDispatchFlag static int oci_cgroup_memory_limit(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { uint64_t *m = userdata; - uintmax_t k; + uint64_t k; assert(m); @@ -1275,7 +1275,7 @@ struct cpu_data { static int oci_cgroup_cpu_shares(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { uint64_t *u = userdata; - uintmax_t k; + uint64_t k; assert(u); @@ -1290,7 +1290,7 @@ static int oci_cgroup_cpu_shares(const char *name, JsonVariant *v, JsonDispatchF static int oci_cgroup_cpu_quota(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { uint64_t *u = userdata; - uintmax_t k; + uint64_t k; assert(u); @@ -1382,7 +1382,7 @@ static int oci_cgroup_cpu(const char *name, JsonVariant *v, JsonDispatchFlags fl static int oci_cgroup_block_io_weight(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { Settings *s = userdata; - uintmax_t k; + uint64_t k; int r; assert(s); @@ -1414,18 +1414,18 @@ static int oci_cgroup_block_io_weight_device(const char *name, JsonVariant *v, J struct device_data { unsigned major; unsigned minor; - uintmax_t weight; + uint64_t weight; } data = { .major = UINT_MAX, .minor = UINT_MAX, - .weight = UINTMAX_MAX, + .weight = UINT64_MAX, }; static const JsonDispatch table[] = { - { "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY }, - { "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY }, - { "weight", JSON_VARIANT_UNSIGNED, json_dispatch_uintmax, offsetof(struct device_data, weight), 0 }, - { "leafWeight", JSON_VARIANT_INTEGER, oci_unsupported, 0, JSON_PERMISSIVE }, + { "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY }, + { "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY }, + { "weight", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(struct device_data, weight), 0 }, + { "leafWeight", JSON_VARIANT_INTEGER, oci_unsupported, 0, JSON_PERMISSIVE }, {} }; @@ -1435,7 +1435,7 @@ static int oci_cgroup_block_io_weight_device(const char *name, JsonVariant *v, J if (r < 0) return r; - if (data.weight == UINTMAX_MAX) + if (data.weight == UINT64_MAX) continue; if (data.weight < CGROUP_BLKIO_WEIGHT_MIN || data.weight > CGROUP_BLKIO_WEIGHT_MAX) @@ -1475,16 +1475,16 @@ static int oci_cgroup_block_io_throttle(const char *name, JsonVariant *v, JsonDi struct device_data { unsigned major; unsigned minor; - uintmax_t rate; + uint64_t rate; } data = { .major = UINT_MAX, .minor = UINT_MAX, }; static const JsonDispatch table[] = { - { "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY }, - { "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY }, - { "rate", JSON_VARIANT_UNSIGNED, json_dispatch_uintmax, offsetof(struct device_data, rate), JSON_MANDATORY }, + { "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY }, + { "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY }, + { "rate", JSON_VARIANT_UNSIGNED, json_dispatch_uint64, offsetof(struct device_data, rate), JSON_MANDATORY }, {} }; @@ -1557,7 +1557,7 @@ static int oci_cgroup_pids(const char *name, JsonVariant *v, JsonDispatchFlags f m = (uint64_t) json_variant_unsigned(k); - if ((uintmax_t) m != json_variant_unsigned(k)) + if ((uint64_t) m != json_variant_unsigned(k)) return json_log(v, flags, SYNTHETIC_ERRNO(EINVAL), "pids limit out of range, refusing."); } @@ -2097,7 +2097,7 @@ static int oci_linux(const char *name, JsonVariant *v, JsonDispatchFlags flags, static int oci_hook_timeout(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { usec_t *u = userdata; - uintmax_t k; + uint64_t k; k = json_variant_unsigned(v); if (k == 0 || k > (UINT64_MAX-1)/USEC_PER_SEC) diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c index e2a29475a2..d77ffdd9f2 100644 --- a/src/nss-resolve/nss-resolve.c +++ b/src/nss-resolve/nss-resolve.c @@ -82,7 +82,7 @@ static uint32_t ifindex_to_scopeid(int family, const void *a, int ifindex) { static int json_dispatch_ifindex(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { int *ifi = userdata; - intmax_t t; + int64_t t; assert(variant); assert(ifi); @@ -100,7 +100,7 @@ static int json_dispatch_ifindex(const char *name, JsonVariant *variant, JsonDis static int json_dispatch_family(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { int *family = userdata; - intmax_t t; + int64_t t; assert(variant); assert(family); @@ -160,7 +160,7 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is array of unexpected size.", strna(name)); JSON_VARIANT_ARRAY_FOREACH(i, variant) { - intmax_t b; + int64_t b; if (!json_variant_is_integer(i)) return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is not an integer.", k, strna(name)); diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c index 4a26f6b9fe..cc684608a6 100644 --- a/src/resolve/resolved-varlink.c +++ b/src/resolve/resolved-varlink.c @@ -364,7 +364,7 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is array of unexpected size.", strna(name)); JSON_VARIANT_ARRAY_FOREACH(i, variant) { - intmax_t b; + int64_t b; if (!json_variant_is_integer(i)) return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is not an integer.", k, strna(name)); diff --git a/src/shared/json-internal.h b/src/shared/json-internal.h index 652fde6147..778cc51e75 100644 --- a/src/shared/json-internal.h +++ b/src/shared/json-internal.h @@ -12,8 +12,8 @@ typedef union JsonValue { /* Encodes a simple value. This structure is generally 8 bytes wide (as double is 64bit). */ bool boolean; double real; - intmax_t integer; - uintmax_t unsig; + int64_t integer; + uint64_t unsig; } JsonValue; /* Let's protect us against accidental structure size changes on our most relevant arch */ diff --git a/src/shared/json.c b/src/shared/json.c index 0ee14e7898..5e162ec0ff 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -305,7 +305,7 @@ static int json_variant_new(JsonVariant **ret, JsonVariantType type, size_t spac return 0; } -int json_variant_new_integer(JsonVariant **ret, intmax_t i) { +int json_variant_new_integer(JsonVariant **ret, int64_t i) { JsonVariant *v; int r; @@ -326,7 +326,7 @@ int json_variant_new_integer(JsonVariant **ret, intmax_t i) { return 0; } -int json_variant_new_unsigned(JsonVariant **ret, uintmax_t u) { +int json_variant_new_unsigned(JsonVariant **ret, uint64_t u) { JsonVariant *v; int r; @@ -751,10 +751,10 @@ static size_t json_variant_size(JsonVariant* v) { return offsetof(JsonVariant, value) + sizeof(double); case JSON_VARIANT_UNSIGNED: - return offsetof(JsonVariant, value) + sizeof(uintmax_t); + return offsetof(JsonVariant, value) + sizeof(uint64_t); case JSON_VARIANT_INTEGER: - return offsetof(JsonVariant, value) + sizeof(intmax_t); + return offsetof(JsonVariant, value) + sizeof(int64_t); case JSON_VARIANT_BOOLEAN: return offsetof(JsonVariant, value) + sizeof(bool); @@ -895,7 +895,7 @@ mismatch: return false; } -intmax_t json_variant_integer(JsonVariant *v) { +int64_t json_variant_integer(JsonVariant *v) { if (!v) goto mismatch; if (v == JSON_VARIANT_MAGIC_ZERO_INTEGER || @@ -913,16 +913,16 @@ intmax_t json_variant_integer(JsonVariant *v) { return v->value.integer; case JSON_VARIANT_UNSIGNED: - if (v->value.unsig <= INTMAX_MAX) - return (intmax_t) v->value.unsig; + if (v->value.unsig <= INT64_MAX) + return (int64_t) v->value.unsig; log_debug("Unsigned integer %ju requested as signed integer and out of range, returning 0.", v->value.unsig); return 0; case JSON_VARIANT_REAL: { - intmax_t converted; + int64_t converted; - converted = (intmax_t) v->value.real; + converted = (int64_t) v->value.real; DISABLE_WARNING_FLOAT_EQUAL; if ((double) converted == v->value.real) @@ -942,7 +942,7 @@ mismatch: return 0; } -uintmax_t json_variant_unsigned(JsonVariant *v) { +uint64_t json_variant_unsigned(JsonVariant *v) { if (!v) goto mismatch; if (v == JSON_VARIANT_MAGIC_ZERO_INTEGER || @@ -958,7 +958,7 @@ uintmax_t json_variant_unsigned(JsonVariant *v) { case JSON_VARIANT_INTEGER: if (v->value.integer >= 0) - return (uintmax_t) v->value.integer; + return (uint64_t) v->value.integer; log_debug("Signed integer %ju requested as unsigned integer and out of range, returning 0.", v->value.integer); return 0; @@ -967,9 +967,9 @@ uintmax_t json_variant_unsigned(JsonVariant *v) { return v->value.unsig; case JSON_VARIANT_REAL: { - uintmax_t converted; + uint64_t converted; - converted = (uintmax_t) v->value.real; + converted = (uint64_t) v->value.real; DISABLE_WARNING_FLOAT_EQUAL; if ((double) converted == v->value.real) @@ -1009,7 +1009,7 @@ double json_variant_real(JsonVariant *v) { case JSON_VARIANT_INTEGER: { double converted = (double) v->value.integer; - if ((intmax_t) converted == v->value.integer) + if ((int64_t) converted == v->value.integer) return converted; log_debug("Signed integer %ji requested as real, and cannot be converted losslessly, returning 0.", v->value.integer); @@ -1019,7 +1019,7 @@ double json_variant_real(JsonVariant *v) { case JSON_VARIANT_UNSIGNED: { double converted = (double) v->value.unsig; - if ((uintmax_t) converted == v->value.unsig) + if ((uint64_t) converted == v->value.unsig) return converted; log_debug("Unsigned integer %ju requested as real, and cannot be converted losslessly, returning 0.", v->value.unsig); @@ -1155,21 +1155,21 @@ bool json_variant_has_type(JsonVariant *v, JsonVariantType type) { if (rt == JSON_VARIANT_INTEGER && type == JSON_VARIANT_UNSIGNED) return v->value.integer >= 0; if (rt == JSON_VARIANT_UNSIGNED && type == JSON_VARIANT_INTEGER) - return v->value.unsig <= INTMAX_MAX; + return v->value.unsig <= INT64_MAX; /* Any integer that can be converted lossley to a real and back may also be considered a real */ if (rt == JSON_VARIANT_INTEGER && type == JSON_VARIANT_REAL) - return (intmax_t) (double) v->value.integer == v->value.integer; + return (int64_t) (double) v->value.integer == v->value.integer; if (rt == JSON_VARIANT_UNSIGNED && type == JSON_VARIANT_REAL) - return (uintmax_t) (double) v->value.unsig == v->value.unsig; + return (uint64_t) (double) v->value.unsig == v->value.unsig; DISABLE_WARNING_FLOAT_EQUAL; /* Any real that can be converted losslessly to an integer and back may also be considered an integer */ if (rt == JSON_VARIANT_REAL && type == JSON_VARIANT_INTEGER) - return (double) (intmax_t) v->value.real == v->value.real; + return (double) (int64_t) v->value.real == v->value.real; if (rt == JSON_VARIANT_REAL && type == JSON_VARIANT_UNSIGNED) - return (double) (uintmax_t) v->value.real == v->value.real; + return (double) (uint64_t) v->value.real == v->value.real; REENABLE_WARNING; @@ -1961,7 +1961,7 @@ int json_variant_set_field_string(JsonVariant **v, const char *field, const char return json_variant_set_field(v, field, m); } -int json_variant_set_field_integer(JsonVariant **v, const char *field, intmax_t i) { +int json_variant_set_field_integer(JsonVariant **v, const char *field, int64_t i) { _cleanup_(json_variant_unrefp) JsonVariant *m = NULL; int r; @@ -1972,7 +1972,7 @@ int json_variant_set_field_integer(JsonVariant **v, const char *field, intmax_t return json_variant_set_field(v, field, m); } -int json_variant_set_field_unsigned(JsonVariant **v, const char *field, uintmax_t u) { +int json_variant_set_field_unsigned(JsonVariant **v, const char *field, uint64_t u) { _cleanup_(json_variant_unrefp) JsonVariant *m = NULL; int r; @@ -2189,13 +2189,13 @@ static int json_variant_copy(JsonVariant **nv, JsonVariant *v) { t = json_variant_type(v); switch (t) { case JSON_VARIANT_INTEGER: - k = sizeof(intmax_t); + k = sizeof(int64_t); value.integer = json_variant_integer(v); source = &value; break; case JSON_VARIANT_UNSIGNED: - k = sizeof(uintmax_t); + k = sizeof(uint64_t); value.unsig = json_variant_unsigned(v); source = &value; break; @@ -2525,8 +2525,8 @@ static int json_parse_string(const char **p, char **ret) { static int json_parse_number(const char **p, JsonValue *ret) { bool negative = false, exponent_negative = false, is_real = false; double x = 0.0, y = 0.0, exponent = 0.0, shift = 1.0; - intmax_t i = 0; - uintmax_t u = 0; + int64_t i = 0; + uint64_t u = 0; const char *c; assert(p); @@ -2550,23 +2550,23 @@ static int json_parse_number(const char **p, JsonValue *ret) { if (!is_real) { if (negative) { - if (i < INTMAX_MIN / 10) /* overflow */ + if (i < INT64_MIN / 10) /* overflow */ is_real = true; else { - intmax_t t = 10 * i; + int64_t t = 10 * i; - if (t < INTMAX_MIN + (*c - '0')) /* overflow */ + if (t < INT64_MIN + (*c - '0')) /* overflow */ is_real = true; else i = t - (*c - '0'); } } else { - if (u > UINTMAX_MAX / 10) /* overflow */ + if (u > UINT64_MAX / 10) /* overflow */ is_real = true; else { - uintmax_t t = 10 * u; + uint64_t t = 10 * u; - if (t > UINTMAX_MAX - (*c - '0')) /* overflow */ + if (t > UINT64_MAX - (*c - '0')) /* overflow */ is_real = true; else u = t + (*c - '0'); @@ -3288,14 +3288,14 @@ int json_buildv(JsonVariant **ret, va_list ap) { } case _JSON_BUILD_INTEGER: { - intmax_t j; + int64_t j; if (!IN_SET(current->expect, EXPECT_TOPLEVEL, EXPECT_OBJECT_VALUE, EXPECT_ARRAY_ELEMENT)) { r = -EINVAL; goto finish; } - j = va_arg(ap, intmax_t); + j = va_arg(ap, int64_t); if (current->n_suppress == 0) { r = json_variant_new_integer(&add, j); @@ -3316,14 +3316,14 @@ int json_buildv(JsonVariant **ret, va_list ap) { } case _JSON_BUILD_UNSIGNED: { - uintmax_t j; + uint64_t j; if (!IN_SET(current->expect, EXPECT_TOPLEVEL, EXPECT_OBJECT_VALUE, EXPECT_ARRAY_ELEMENT)) { r = -EINVAL; goto finish; } - j = va_arg(ap, uintmax_t); + j = va_arg(ap, uint64_t); if (current->n_suppress == 0) { r = json_variant_new_unsigned(&add, j); @@ -4064,8 +4064,8 @@ int json_dispatch_tristate(const char *name, JsonVariant *variant, JsonDispatchF return 0; } -int json_dispatch_intmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { - intmax_t *i = userdata; +int json_dispatch_int64(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { + int64_t *i = userdata; assert(variant); assert(i); @@ -4077,8 +4077,8 @@ int json_dispatch_intmax(const char *name, JsonVariant *variant, JsonDispatchFla return 0; } -int json_dispatch_uintmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { - uintmax_t *u = userdata; +int json_dispatch_uint64(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { + uint64_t *u = userdata; assert(variant); assert(u); @@ -4228,7 +4228,7 @@ int json_dispatch_variant(const char *name, JsonVariant *variant, JsonDispatchFl int json_dispatch_uid_gid(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { uid_t *uid = userdata; - uintmax_t k; + uint64_t k; assert_cc(sizeof(uid_t) == sizeof(uint32_t)); assert_cc(sizeof(gid_t) == sizeof(uint32_t)); diff --git a/src/shared/json.h b/src/shared/json.h index 6e649a3c33..0676e7bf5c 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -59,8 +59,8 @@ typedef enum JsonVariantType { int json_variant_new_stringn(JsonVariant **ret, const char *s, size_t n); int json_variant_new_base64(JsonVariant **ret, const void *p, size_t n); int json_variant_new_hex(JsonVariant **ret, const void *p, size_t n); -int json_variant_new_integer(JsonVariant **ret, intmax_t i); -int json_variant_new_unsigned(JsonVariant **ret, uintmax_t u); +int json_variant_new_integer(JsonVariant **ret, int64_t i); +int json_variant_new_unsigned(JsonVariant **ret, uint64_t u); int json_variant_new_real(JsonVariant **ret, double d); int json_variant_new_boolean(JsonVariant **ret, bool b); int json_variant_new_array(JsonVariant **ret, JsonVariant **array, size_t n); @@ -81,8 +81,8 @@ void json_variant_unref_many(JsonVariant **array, size_t n); DEFINE_TRIVIAL_CLEANUP_FUNC(JsonVariant *, json_variant_unref); const char *json_variant_string(JsonVariant *v); -intmax_t json_variant_integer(JsonVariant *v); -uintmax_t json_variant_unsigned(JsonVariant *v); +int64_t json_variant_integer(JsonVariant *v); +uint64_t json_variant_unsigned(JsonVariant *v); double json_variant_real(JsonVariant *v); bool json_variant_boolean(JsonVariant *v); @@ -189,8 +189,8 @@ int json_variant_filter(JsonVariant **v, char **to_remove); int json_variant_set_field(JsonVariant **v, const char *field, JsonVariant *value); int json_variant_set_field_string(JsonVariant **v, const char *field, const char *value); -int json_variant_set_field_integer(JsonVariant **v, const char *field, intmax_t value); -int json_variant_set_field_unsigned(JsonVariant **v, const char *field, uintmax_t value); +int json_variant_set_field_integer(JsonVariant **v, const char *field, int64_t value); +int json_variant_set_field_unsigned(JsonVariant **v, const char *field, uint64_t value); int json_variant_set_field_boolean(JsonVariant **v, const char *field, bool b); int json_variant_set_field_strv(JsonVariant **v, const char *field, char **l); @@ -240,8 +240,8 @@ enum { }; #define JSON_BUILD_STRING(s) _JSON_BUILD_STRING, (const char*) { s } -#define JSON_BUILD_INTEGER(i) _JSON_BUILD_INTEGER, (intmax_t) { i } -#define JSON_BUILD_UNSIGNED(u) _JSON_BUILD_UNSIGNED, (uintmax_t) { u } +#define JSON_BUILD_INTEGER(i) _JSON_BUILD_INTEGER, (int64_t) { i } +#define JSON_BUILD_UNSIGNED(u) _JSON_BUILD_UNSIGNED, (uint64_t) { u } #define JSON_BUILD_REAL(d) _JSON_BUILD_REAL, (double) { d } #define JSON_BUILD_BOOLEAN(b) _JSON_BUILD_BOOLEAN, (bool) { b } #define JSON_BUILD_ARRAY(...) _JSON_BUILD_ARRAY_BEGIN, __VA_ARGS__, _JSON_BUILD_ARRAY_END @@ -297,8 +297,8 @@ int json_dispatch_strv(const char *name, JsonVariant *variant, JsonDispatchFlags int json_dispatch_boolean(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_tristate(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_variant(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); -int json_dispatch_intmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); -int json_dispatch_uintmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); +int json_dispatch_int64(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); +int json_dispatch_uint64(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_uint32(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_int32(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_uid_gid(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); @@ -306,12 +306,6 @@ int json_dispatch_user_group_name(const char *name, JsonVariant *variant, JsonDi int json_dispatch_id128(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); int json_dispatch_unsupported(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata); -assert_cc(sizeof(uintmax_t) == sizeof(uint64_t)); -#define json_dispatch_uint64 json_dispatch_uintmax - -assert_cc(sizeof(intmax_t) == sizeof(int64_t)); -#define json_dispatch_int64 json_dispatch_intmax - assert_cc(sizeof(uint32_t) == sizeof(unsigned)); #define json_dispatch_uint json_dispatch_uint32 diff --git a/src/shared/user-record.c b/src/shared/user-record.c index e16395f032..268f8a3998 100644 --- a/src/shared/user-record.c +++ b/src/shared/user-record.c @@ -252,7 +252,7 @@ int json_dispatch_gecos(const char *name, JsonVariant *variant, JsonDispatchFlag static int json_dispatch_nice(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { int *nl = userdata; - intmax_t m; + int64_t m; if (json_variant_is_null(variant)) { *nl = INT_MAX; @@ -276,10 +276,10 @@ static int json_dispatch_rlimit_value(const char *name, JsonVariant *variant, Js if (json_variant_is_null(variant)) *ret = RLIM_INFINITY; else if (json_variant_is_unsigned(variant)) { - uintmax_t w; + uint64_t w; w = json_variant_unsigned(variant); - if (w == RLIM_INFINITY || (uintmax_t) w != json_variant_unsigned(variant)) + if (w == RLIM_INFINITY || (uint64_t) w != json_variant_unsigned(variant)) return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "Resource limit value '%s' is out of range.", name); *ret = (rlim_t) w; @@ -453,7 +453,7 @@ static int json_dispatch_image_path(const char *name, JsonVariant *variant, Json static int json_dispatch_umask(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { mode_t *m = userdata; - uintmax_t k; + uint64_t k; if (json_variant_is_null(variant)) { *m = MODE_INVALID; @@ -473,7 +473,7 @@ static int json_dispatch_umask(const char *name, JsonVariant *variant, JsonDispa static int json_dispatch_access_mode(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { mode_t *m = userdata; - uintmax_t k; + uint64_t k; if (json_variant_is_null(variant)) { *m = MODE_INVALID; @@ -564,8 +564,7 @@ static int json_dispatch_storage(const char *name, JsonVariant *variant, JsonDis } static int json_dispatch_tasks_or_memory_max(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { - uint64_t *limit = userdata; - uintmax_t k; + uint64_t *limit = userdata, k; if (json_variant_is_null(variant)) { *limit = UINT64_MAX; @@ -584,8 +583,7 @@ static int json_dispatch_tasks_or_memory_max(const char *name, JsonVariant *vari } static int json_dispatch_weight(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) { - uint64_t *weight = userdata; - uintmax_t k; + uint64_t *weight = userdata, k; if (json_variant_is_null(variant)) { *weight = UINT64_MAX; diff --git a/src/test/test-json.c b/src/test/test-json.c index 83f3d566a6..d0bc810c7f 100644 --- a/src/test/test-json.c +++ b/src/test/test-json.c @@ -54,15 +54,15 @@ static void test_tokenizer(const char *data, ...) { fabsl((d - v.real) / v.real) < 1e-10); } else if (t == JSON_TOKEN_INTEGER) { - intmax_t i; + int64_t i; - i = va_arg(ap, intmax_t); + i = va_arg(ap, int64_t); assert_se(i == v.integer); } else if (t == JSON_TOKEN_UNSIGNED) { - uintmax_t u; + uint64_t u; - u = va_arg(ap, uintmax_t); + u = va_arg(ap, uint64_t); assert_se(u == v.unsig); } else if (t == JSON_TOKEN_BOOLEAN) { @@ -575,15 +575,15 @@ int main(int argc, char *argv[]) { test_tokenizer("x", -EINVAL); test_tokenizer("", JSON_TOKEN_END); test_tokenizer(" ", JSON_TOKEN_END); - test_tokenizer("0", JSON_TOKEN_UNSIGNED, (uintmax_t) 0, JSON_TOKEN_END); - test_tokenizer("-0", JSON_TOKEN_INTEGER, (intmax_t) 0, JSON_TOKEN_END); - test_tokenizer("1234", JSON_TOKEN_UNSIGNED, (uintmax_t) 1234, JSON_TOKEN_END); - test_tokenizer("-1234", JSON_TOKEN_INTEGER, (intmax_t) -1234, JSON_TOKEN_END); - test_tokenizer("18446744073709551615", JSON_TOKEN_UNSIGNED, (uintmax_t) UINT64_MAX, JSON_TOKEN_END); - test_tokenizer("-9223372036854775808", JSON_TOKEN_INTEGER, (intmax_t) INT64_MIN, JSON_TOKEN_END); + test_tokenizer("0", JSON_TOKEN_UNSIGNED, (uint64_t) 0, JSON_TOKEN_END); + test_tokenizer("-0", JSON_TOKEN_INTEGER, (int64_t) 0, JSON_TOKEN_END); + test_tokenizer("1234", JSON_TOKEN_UNSIGNED, (uint64_t) 1234, JSON_TOKEN_END); + test_tokenizer("-1234", JSON_TOKEN_INTEGER, (int64_t) -1234, JSON_TOKEN_END); + test_tokenizer("18446744073709551615", JSON_TOKEN_UNSIGNED, (uint64_t) UINT64_MAX, JSON_TOKEN_END); + test_tokenizer("-9223372036854775808", JSON_TOKEN_INTEGER, (int64_t) INT64_MIN, JSON_TOKEN_END); test_tokenizer("18446744073709551616", JSON_TOKEN_REAL, (double) 18446744073709551616.0L, JSON_TOKEN_END); test_tokenizer("-9223372036854775809", JSON_TOKEN_REAL, (double) -9223372036854775809.0L, JSON_TOKEN_END); - test_tokenizer("-1234", JSON_TOKEN_INTEGER, (intmax_t) -1234, JSON_TOKEN_END); + test_tokenizer("-1234", JSON_TOKEN_INTEGER, (int64_t) -1234, JSON_TOKEN_END); test_tokenizer("3.141", JSON_TOKEN_REAL, (double) 3.141, JSON_TOKEN_END); test_tokenizer("0.0", JSON_TOKEN_REAL, (double) 0.0, JSON_TOKEN_END); test_tokenizer("7e3", JSON_TOKEN_REAL, (double) 7e3, JSON_TOKEN_END); @@ -607,7 +607,7 @@ int main(int argc, char *argv[]) { test_tokenizer("\"\\udc00\\udc00\"", -EINVAL); test_tokenizer("\"\\ud801\\udc37\"", JSON_TOKEN_STRING, "\xf0\x90\x90\xb7", JSON_TOKEN_END); - test_tokenizer("[1, 2, -3]", JSON_TOKEN_ARRAY_OPEN, JSON_TOKEN_UNSIGNED, (uintmax_t) 1, JSON_TOKEN_COMMA, JSON_TOKEN_UNSIGNED, (uintmax_t) 2, JSON_TOKEN_COMMA, JSON_TOKEN_INTEGER, (intmax_t) -3, JSON_TOKEN_ARRAY_CLOSE, JSON_TOKEN_END); + test_tokenizer("[1, 2, -3]", JSON_TOKEN_ARRAY_OPEN, JSON_TOKEN_UNSIGNED, (uint64_t) 1, JSON_TOKEN_COMMA, JSON_TOKEN_UNSIGNED, (uint64_t) 2, JSON_TOKEN_COMMA, JSON_TOKEN_INTEGER, (int64_t) -3, JSON_TOKEN_ARRAY_CLOSE, JSON_TOKEN_END); test_variant("{\"k\": \"v\", \"foo\": [1, 2, 3], \"bar\": {\"zap\": null}}", test_1); test_variant("{\"mutant\": [1, null, \"1\", {\"1\": [1, \"1\"]}], \"thisisaverylongproperty\": 1.27}", test_2); diff --git a/src/test/test-varlink.c b/src/test/test-varlink.c index a2708ecd08..d442b8b5f1 100644 --- a/src/test/test-varlink.c +++ b/src/test/test-varlink.c @@ -26,7 +26,7 @@ static int block_write_fd = -1; static int method_something(Varlink *link, JsonVariant *parameters, VarlinkMethodFlags flags, void *userdata) { _cleanup_(json_variant_unrefp) JsonVariant *ret = NULL; JsonVariant *a, *b; - intmax_t x, y; + int64_t x, y; int r; a = json_variant_by_key(parameters, "a"); |