/* SPDX-License-Identifier: LGPL-2.1+ */
/***
- This file is part of systemd.
-
- Copyright 2010 Lennart Poettering
- Copyright 2012 Holger Hans Peter Freyther
+ Copyright © 2012 Holger Hans Peter Freyther
***/
#include <errno.h>
resolved = mfree(resolved);
else if (!fdname_is_valid(resolved)) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid file descriptor name: %s", resolved);
- return -EINVAL;
+ return -ENOEXEC;
}
free_and_replace(c->stdio_fdname[STDIN_FILENO], resolved);
r = path_simplify_and_warn(resolved, PATH_CHECK_ABSOLUTE | PATH_CHECK_FATAL, unit, filename, line, lvalue);
if (r < 0)
- return -EINVAL;
+ return -ENOEXEC;
free_and_replace(c->stdio_file[STDIN_FILENO], resolved);
resolved = mfree(resolved);
else if (!fdname_is_valid(resolved)) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid file descriptor name: %s", resolved);
- return -EINVAL;
+ return -ENOEXEC;
}
eo = EXEC_OUTPUT_NAMED_FD;
r = path_simplify_and_warn(resolved, PATH_CHECK_ABSOLUTE | PATH_CHECK_FATAL, unit, filename, line, lvalue);
if (r < 0)
- return -EINVAL;
+ return -ENOEXEC;
eo = EXEC_OUTPUT_FILE;
return 0;
}
- r = path_simplify_and_warn(resolved, 0, unit, filename, line, lvalue);
- if (r < 0)
- return 0;
+ if (!startswith(resolved, "block-") && !startswith(resolved, "char-")) {
- if (!is_deviceallow_pattern(resolved) &&
- !path_startswith(resolved, "/run/systemd/inaccessible/")) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s', ignoring.", resolved);
- return 0;
+ r = path_simplify_and_warn(resolved, 0, unit, filename, line, lvalue);
+ if (r < 0)
+ return 0;
+
+ if (!valid_device_node_path(resolved)) {
+ log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s', ignoring.", resolved);
+ return 0;
+ }
}
if (!isempty(p) && !in_charset(p, "rwm")) {
if (r < 0)
return 0;
- if (!path_startswith(resolved, "/dev") &&
- !path_startswith(resolved, "/run/systemd/inaccessible/")) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s', ignoring.", resolved);
- return 0;
- }
-
r = cg_weight_parse(p, &u);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "IO weight '%s' invalid, ignoring: %m", p);
if (r < 0)
return 0;
- if (!path_startswith(resolved, "/dev") &&
- !path_startswith(resolved, "/run/systemd/inaccessible/")) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s', ignoring.", resolved);
- return 0;
- }
-
- if (streq("infinity", p)) {
+ if (streq("infinity", p))
num = CGROUP_LIMIT_MAX;
- } else {
+ else {
r = parse_size(p, 1000, &num);
if (r < 0 || num <= 0) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid IO limit '%s', ignoring.", p);
if (r < 0)
return 0;
- if (!path_startswith(resolved, "/dev") &&
- !path_startswith(resolved, "/run/systemd/inaccessible/")) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s'. Ignoring.", resolved);
- return 0;
- }
-
r = cg_blkio_weight_parse(p, &u);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Invalid block IO weight '%s', ignoring: %m", p);
if (r < 0)
return 0;
- if (!path_startswith(resolved, "/dev") &&
- !path_startswith(resolved, "/run/systemd/inaccessible/")) {
- log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid device node path '%s', ignoring.", resolved);
- return 0;
- }
-
r = parse_size(p, 1000, &bytes);
if (r < 0 || bytes <= 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Invalid Block IO Bandwidth '%s', ignoring.", p);