summaryrefslogtreecommitdiff
path: root/init/builtins.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2017-08-28 19:39:08 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-08-28 19:39:08 +0000
commitc39a5082dc65cbf7bda948c4bc466a40376d1683 (patch)
tree069c9b83a9ec7826ff128dc71e71829167ea0506 /init/builtins.cpp
parent849b481786171c06ebaccde448a40ae12f0f996a (diff)
parent459aa1cac669b3bac6232e5906ceeacd33671b62 (diff)
Merge "init: support setting rlimits per service"
am: 459aa1cac6 Change-Id: I4ef5abc3371ce52783bfb14669bcffe33febb73e
Diffstat (limited to 'init/builtins.cpp')
-rw-r--r--init/builtins.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp
index 5c3f2754a..87c9621dc 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -63,6 +63,7 @@
#include "parser.h"
#include "property_service.h"
#include "reboot.h"
+#include "rlimit_parser.h"
#include "service.h"
#include "signal_handler.h"
#include "util.h"
@@ -582,20 +583,10 @@ static Result<Success> do_setprop(const std::vector<std::string>& args) {
}
static Result<Success> do_setrlimit(const std::vector<std::string>& args) {
- int resource;
- if (!android::base::ParseInt(args[1], &resource)) {
- return Error() << "unable to parse resource, " << args[1];
- }
-
- struct rlimit limit;
- if (!android::base::ParseUint(args[2], &limit.rlim_cur)) {
- return Error() << "unable to parse rlim_cur, " << args[2];
- }
- if (!android::base::ParseUint(args[3], &limit.rlim_max)) {
- return Error() << "unable to parse rlim_max, " << args[3];
- }
+ auto rlimit = ParseRlimit(args);
+ if (!rlimit) return rlimit.error();
- if (setrlimit(resource, &limit) == -1) {
+ if (setrlimit(rlimit->first, &rlimit->second) == -1) {
return ErrnoError() << "setrlimit failed";
}
return Success();