contain: use setrlimit64 instead of syscall(__NR_prlimit64)
authorRobert Swiecki <robert@swiecki.net>
Fri, 29 Sep 2017 12:32:39 +0000 (14:32 +0200)
committerRobert Swiecki <robert@swiecki.net>
Fri, 29 Sep 2017 12:32:39 +0000 (14:32 +0200)
contain.c

index 93dc2a45e0f02007ddbbb343996d3250c0151eb4..6987f9f686848eb6a0fab68a3584489c61ad0c70 100644 (file)
--- a/contain.c
+++ b/contain.c
@@ -126,48 +126,42 @@ static bool containCPU(struct nsjconf_t *nsjconf)
        return cpuInit(nsjconf);
 }
 
-/* uClibc doesn't provide prlimit64 natively */
-static int containSetLimit64(int resource, struct rlimit64 *rlim)
-{
-       return syscall(__NR_prlimit64, (uintptr_t) 0, (uintptr_t) resource, rlim, NULL);
-}
-
 static bool containSetLimits(struct nsjconf_t *nsjconf)
 {
        struct rlimit64 rl;
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_as;
-       if (containSetLimit64(RLIMIT_AS, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_AS, %" PRIu64 ")", nsjconf->rl_as);
+       if (setrlimit64(RLIMIT_AS, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_AS, %" PRIu64 ")", nsjconf->rl_as);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_core;
-       if (containSetLimit64(RLIMIT_CORE, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_CORE, %" PRIu64 ")", nsjconf->rl_core);
+       if (setrlimit64(RLIMIT_CORE, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_CORE, %" PRIu64 ")", nsjconf->rl_core);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_cpu;
-       if (containSetLimit64(RLIMIT_CPU, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_CPU, %" PRIu64 ")", nsjconf->rl_cpu);
+       if (setrlimit64(RLIMIT_CPU, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_CPU, %" PRIu64 ")", nsjconf->rl_cpu);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_fsize;
-       if (containSetLimit64(RLIMIT_FSIZE, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_FSIZE, %" PRIu64 ")", nsjconf->rl_fsize);
+       if (setrlimit64(RLIMIT_FSIZE, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_FSIZE, %" PRIu64 ")", nsjconf->rl_fsize);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_nofile;
-       if (containSetLimit64(RLIMIT_NOFILE, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_NOFILE, %" PRIu64 ")", nsjconf->rl_nofile);
+       if (setrlimit64(RLIMIT_NOFILE, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_NOFILE, %" PRIu64 ")", nsjconf->rl_nofile);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_nproc;
-       if (containSetLimit64(RLIMIT_NPROC, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_NPROC, %" PRIu64 ")", nsjconf->rl_nproc);
+       if (setrlimit64(RLIMIT_NPROC, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_NPROC, %" PRIu64 ")", nsjconf->rl_nproc);
                return false;
        }
        rl.rlim_cur = rl.rlim_max = nsjconf->rl_stack;
-       if (containSetLimit64(RLIMIT_STACK, &rl) == -1) {
-               PLOG_E("containSetLimit64(0, RLIMIT_STACK, %" PRIu64 ")", nsjconf->rl_stack);
+       if (setrlimit64(RLIMIT_STACK, &rl) == -1) {
+               PLOG_E("setrlimit64(0, RLIMIT_STACK, %" PRIu64 ")", nsjconf->rl_stack);
                return false;
        }
        return true;