Skip to content

Commit 10325e9

Browse files
committed
By default, Sandbox sets maximum file size equal to memory limit.
Provides a partial and temporary fix for #309.
1 parent d71bcf8 commit 10325e9

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

cms/grading/Sandbox.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# -*- coding: utf-8 -*-
33

44
# Contest Management System - http://cms-dev.github.io/
5-
# Copyright © 2010-2014 Giovanni Mascellani <mascellani@poisson.phc.unipi.it>
5+
# Copyright © 2010-2015 Giovanni Mascellani <mascellani@poisson.phc.unipi.it>
66
# Copyright © 2010-2015 Stefano Maggiolo <s.maggiolo@gmail.com>
77
# Copyright © 2010-2012 Matteo Boscariol <boscarim@hotmail.com>
88
# Copyright © 2014 Luca Wehrstedt <luca.wehrstedt@gmail.com>
@@ -463,6 +463,7 @@ def __init__(self, file_cacher=None, temp_dir=None):
463463
# These parameters are not going to be used, but are here for
464464
# API compatibility
465465
self.box_id = 0
466+
self.fsize = None
466467
self.cgroup = False
467468
self.dirs = []
468469
self.preserve_env = False
@@ -807,6 +808,7 @@ def __init__(self, file_cacher=None, temp_dir=None):
807808
self.preserve_env = False # -e
808809
self.inherit_env = [] # -E
809810
self.set_env = {} # -E
811+
self.fsize = None # -f
810812
self.stdin_file = None # -i
811813
self.stack_space = None # -k
812814
self.address_space = None # -m
@@ -937,6 +939,8 @@ def build_box_options(self):
937939
res += ["--env=%s" % var]
938940
for var, value in self.set_env.items():
939941
res += ["--env=%s=%s" % (var, value)]
942+
if self.fsize is not None:
943+
res += ["--fsize=%d" % self.fsize]
940944
if self.stdin_file is not None:
941945
res += ["--stdin=%s" % self.inner_absolute_path(self.stdin_file)]
942946
if self.stack_space is not None:

cms/grading/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ def evaluation_step_before_run(sandbox, command,
391391
sandbox.timeout = 0
392392
sandbox.wallclock_timeout = 0
393393
sandbox.address_space = memory_limit * 1024
394+
sandbox.fsize = memory_limit * 1024
394395

395396
if stdin_redirect is not None:
396397
sandbox.stdin_file = stdin_redirect

0 commit comments

Comments
 (0)