diff options
author | Daniel Mack <github@zonque.org> | 2015-11-27 12:45:04 +0100 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2015-11-27 12:45:04 +0100 |
commit | ab5782459739c7b51333ef592a26ee583bf1d057 (patch) | |
tree | f1378ee76dc35400541c29449b8b6899e2456578 /src/core | |
parent | c9ff64f7256d86e521cccef9c9a077b278b7a946 (diff) | |
parent | fdbbadbd0d13d3296b9aa4273aaeecd9ba6b82d1 (diff) |
Merge pull request #2046 from evverx/rlimit-parsing
Fix rlimit parsing
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/execute.c | 4 | ||||
-rw-r--r-- | src/core/load-fragment.c | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/core/execute.c b/src/core/execute.c index 07979bf8b3..677480cbe1 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -2414,8 +2414,8 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) { for (i = 0; i < RLIM_NLIMITS; i++) if (c->rlimit[i]) - fprintf(f, "%s%s: "RLIM_FMT"\n", - prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max); + fprintf(f, "%s%s: " RLIM_FMT " " RLIM_FMT "\n", + prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur, c->rlimit[i]->rlim_max); if (c->ioprio_set) { _cleanup_free_ char *class_str = NULL; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 8847578bd7..3c124495b6 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1173,6 +1173,7 @@ static int parse_rlimit_range( struct rlimit **rl, int (*rlim_parser)(const char *, rlim_t *)) { + const char *whole_value = value; rlim_t soft, hard; _cleanup_free_ char *sword = NULL, *hword = NULL; int nwords, r; @@ -1188,9 +1189,11 @@ static int parse_rlimit_range( if (r == 0 && nwords == 2) r = rlim_parser(hword, &hard); if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse resource value, ignoring: %s", value); + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse resource value, ignoring: %s", whole_value); return 0; } + if (nwords == 2 && soft > hard) + return log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid resource value ("RLIM_FMT" > "RLIM_FMT"), ignoring: %s", soft, hard, whole_value); if (!*rl) { *rl = new(struct rlimit, 1); |