diff --git a/plugins/script b/plugins/script index f725048..a9de176 100755 --- a/plugins/script +++ b/plugins/script @@ -32,6 +32,9 @@ #include #include +#define ADDRESS_SPACE_LIMIT (100 * 1024 * 1024) +#include + #if defined __GNUC__ #define ATTRIBUTE_PRINTF(x, y) __attribute__ ((format (printf, x, y))) #else // ! __GNUC__ @@ -2164,6 +2167,15 @@ main (int argc, char *argv[]) freopen (NULL, "rb", stdin); setvbuf (stdin, NULL, _IOLBF, BUFSIZ); freopen (NULL, "wb", stdout); setvbuf (stdout, NULL, _IOLBF, BUFSIZ); + struct rlimit limit = + { + .rlim_cur = ADDRESS_SPACE_LIMIT, + .rlim_max = ADDRESS_SPACE_LIMIT + }; + + // Lower the memory limits to something sensible to prevent abuse + (void) setrlimit (RLIMIT_AS, &limit); + read_db (); init_runtime_library (); register_handler (".", fn_dot);