{
int i;
struct rlimit rlim;
+ unsigned long cur, max;
for (i = 0; rlimit_names[i].name != NULL; i++) {
if (strcmp(rlimit_names[i].name, limit))
if (!strcmp(value, "unlimited")) {
rlim.rlim_cur = RLIM_INFINITY;
rlim.rlim_max = RLIM_INFINITY;
+ } else {
+ if (getrlimit(rlimit_names[i].resource, &rlim))
+ return;
+
+ cur = rlim.rlim_cur;
+ max = rlim.rlim_max;
+
+ if (sscanf(value, "%lu %lu", &cur, &max) < 1)
+ return;
+
+ rlim.rlim_cur = cur;
+ rlim.rlim_max = max;
}
- else if (getrlimit(rlimit_names[i].resource, &rlim) ||
- sscanf(value, "%lu %lu", &rlim.rlim_cur, &rlim.rlim_max) == 0)
- return;
+
setrlimit(rlimit_names[i].resource, &rlim);
return;
}
in->respawn_retry = vals[2];
}
if (tb[INSTANCE_ATTR_TRIGGER]) {
- in->trigger = malloc(blob_pad_len(tb[INSTANCE_ATTR_TRIGGER]));
+ in->trigger = blob_memdup(tb[INSTANCE_ATTR_TRIGGER]);
if (!in->trigger)
return -1;
- memcpy(in->trigger, tb[INSTANCE_ATTR_TRIGGER], blob_pad_len(tb[INSTANCE_ATTR_TRIGGER]));
trigger_add(in->trigger, in);
}