From: Frantisek Sumsal Date: Fri, 6 Mar 2026 15:36:52 +0000 (+0100) Subject: shared: don't exclude valid min/max values for cgroup weight fields X-Git-Tag: v260-rc3~57^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76ab7861ff8ce505cf8deff880ce2d6c1bd05e0c;p=thirdparty%2Fsystemd.git shared: don't exclude valid min/max values for cgroup weight fields 1 and 10000 are valid cgroup weight values, but the condition was incorrectly excluding them: $ echo '{"userName":"crashhostarray","cpuWeight":1}' | userdbctl -F - :1:42: JSON field 'cpuWeight' is not in valid range 1…10000. $ echo '{"userName":"crashhostarray","cpuWeight":10000}' | userdbctl -F - :1:42: JSON field 'cpuWeight' is not in valid range 1…10000. --- diff --git a/src/shared/user-record.c b/src/shared/user-record.c index ff03bcafc3a..6458ee93b20 100644 --- a/src/shared/user-record.c +++ b/src/shared/user-record.c @@ -554,11 +554,11 @@ static int json_dispatch_weight(const char *name, sd_json_variant *variant, sd_j return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an integer.", strna(name)); k = sd_json_variant_unsigned(variant); - if (k <= CGROUP_WEIGHT_MIN || k >= CGROUP_WEIGHT_MAX) + if (k < CGROUP_WEIGHT_MIN || k > CGROUP_WEIGHT_MAX) return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' is not in valid range %" PRIu64 "%s%" PRIu64 ".", - strna(name), (uint64_t) CGROUP_WEIGHT_MIN, - glyph(GLYPH_ELLIPSIS), (uint64_t) CGROUP_WEIGHT_MAX); + strna(name), CGROUP_WEIGHT_MIN, + glyph(GLYPH_ELLIPSIS), CGROUP_WEIGHT_MAX); *weight = k; return 0; diff --git a/test/units/TEST-74-AUX-UTILS.userdbctl.sh b/test/units/TEST-74-AUX-UTILS.userdbctl.sh index 42811e74158..fdfff1a65ca 100755 --- a/test/units/TEST-74-AUX-UTILS.userdbctl.sh +++ b/test/units/TEST-74-AUX-UTILS.userdbctl.sh @@ -81,3 +81,7 @@ userdbctl group "$DISK_GID" | grep -F 'io.systemd.NameServiceSwitch' >/dev/null (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByName "s" disk) (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByUID "u" "$DISK_GID") systemctl stop "$UNIT" + +# Probe specific user records +echo '{"userName":"weightmin","cpuWeight":1,"ioWeight":1}' | userdbctl -F - +echo '{"userName":"weightmax","cpuWeight":10000,"ioWeight":10000}' | userdbctl -F -