summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorDaniel Mack <github@zonque.org>2015-11-27 12:45:04 +0100
committerDaniel Mack <github@zonque.org>2015-11-27 12:45:04 +0100
commitab5782459739c7b51333ef592a26ee583bf1d057 (patch)
treef1378ee76dc35400541c29449b8b6899e2456578 /src/core
parentc9ff64f7256d86e521cccef9c9a077b278b7a946 (diff)
parentfdbbadbd0d13d3296b9aa4273aaeecd9ba6b82d1 (diff)
Merge pull request #2046 from evverx/rlimit-parsing
Fix rlimit parsing
Diffstat (limited to 'src/core')
-rw-r--r--src/core/execute.c4
-rw-r--r--src/core/load-fragment.c5
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);