while ((r = sd_bus_message_read(message, "(st)", &path, &u64)) > 0) {
+ if (!path_startswith(path, "/dev"))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path %s specified in %s= is not a device file in /dev", name, path);
+
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
CGroupIODeviceLimit *a = NULL, *b;
while ((r = sd_bus_message_read(message, "(st)", &path, &weight)) > 0) {
+ if (!path_startswith(path, "/dev"))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path %s specified in %s= is not a device file in /dev", name, path);
+
if (!CGROUP_WEIGHT_IS_OK(weight) || weight == CGROUP_WEIGHT_INVALID)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "IODeviceWeight= value out of range");
while ((r = sd_bus_message_read(message, "(st)", &path, &u64)) > 0) {
+ if (!path_startswith(path, "/dev"))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path %s specified in %s= is not a device file in /dev", name, path);
+
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
CGroupBlockIODeviceBandwidth *a = NULL, *b;
while ((r = sd_bus_message_read(message, "(st)", &path, &weight)) > 0) {
+ if (!path_startswith(path, "/dev"))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path %s specified in %s= is not a device file in /dev", name, path);
+
if (!CGROUP_BLKIO_WEIGHT_IS_OK(weight) || weight == CGROUP_BLKIO_WEIGHT_INVALID)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "BlockIODeviceWeight= out of range");
while ((r = sd_bus_message_read(message, "(ss)", &path, &rwm)) > 0) {
- if ((!path_startswith(path, "/dev/") &&
- !path_startswith(path, "/run/systemd/inaccessible/") &&
- !startswith(path, "block-") &&
- !startswith(path, "char-")) ||
+ if ((!is_deviceallow_pattern(path) &&
+ !path_startswith(path, "/run/systemd/inaccessible/")) ||
strpbrk(path, WHITESPACE))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DeviceAllow= requires device node");
if (isempty(eq))
r = sd_bus_message_append(m, "(sv)", field, "a(ss)", 0);
else {
- const char *path, *rwm, *e;
+ const char *path = eq, *rwm = NULL, *e;
e = strchr(eq, ' ');
if (e) {
path = strndupa(eq, e - eq);
rwm = e+1;
- } else {
- path = eq;
- rwm = "";
- }
-
- if (!is_deviceallow_pattern(path)) {
- log_error("%s is not a device file in /dev.", path);
- return -EINVAL;
}
- r = sd_bus_message_append(m, "(sv)", field, "a(ss)", 1, path, rwm);
+ r = sd_bus_message_append(m, "(sv)", field, "a(ss)", 1, path, strempty(rwm));
}
if (r < 0)
uint64_t bytes;
e = strchr(eq, ' ');
- if (e) {
- path = strndupa(eq, e - eq);
- bandwidth = e+1;
- } else {
+ if (!e) {
log_error("Failed to parse %s value %s.", field, eq);
return -EINVAL;
}
- if (!path_startswith(path, "/dev")) {
- log_error("%s is not a device file in /dev.", path);
- return -EINVAL;
- }
+ path = strndupa(eq, e - eq);
+ bandwidth = e+1;
if (streq(bandwidth, "infinity")) {
bytes = CGROUP_LIMIT_MAX;
uint64_t u;
e = strchr(eq, ' ');
- if (e) {
- path = strndupa(eq, e - eq);
- weight = e+1;
- } else {
+ if (!e) {
log_error("Failed to parse %s value %s.", field, eq);
return -EINVAL;
}
- if (!path_startswith(path, "/dev")) {
- log_error("%s is not a device file in /dev.", path);
- return -EINVAL;
- }
+ path = strndupa(eq, e - eq);
+ weight = e+1;
r = safe_atou64(weight, &u);
if (r < 0)