mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 17:51:22 +03:00
commit
ab57824597
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -695,6 +695,27 @@ static void test_config_parse_rlimit(void) {
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == RLIM_INFINITY);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == rl[RLIMIT_NOFILE]->rlim_max);
|
||||
|
||||
assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "10:20:30", rl, NULL) >= 0);
|
||||
assert_se(rl[RLIMIT_NOFILE]);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_max == 20);
|
||||
|
||||
/* Invalid values don't change rl */
|
||||
assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "wat:wat", rl, NULL) >= 0);
|
||||
assert_se(rl[RLIMIT_NOFILE]);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_max == 20);
|
||||
|
||||
assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "66:wat", rl, NULL) >= 0);
|
||||
assert_se(rl[RLIMIT_NOFILE]);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_max == 20);
|
||||
|
||||
assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "200:100", rl, NULL) >= 0);
|
||||
assert_se(rl[RLIMIT_NOFILE]);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10);
|
||||
assert_se(rl[RLIMIT_NOFILE]->rlim_max == 20);
|
||||
|
||||
rl[RLIMIT_NOFILE] = mfree(rl[RLIMIT_NOFILE]);
|
||||
|
||||
assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "56", rl, NULL) >= 0);
|
||||
|
Loading…
Reference in New Issue
Block a user