diff options
author | 2022-11-16 17:40:18 -0500 | |
---|---|---|
committer | 2022-11-16 17:40:18 -0500 | |
commit | 0eb50fc21428fa1b364accc45976b482b92aa2c7 (patch) | |
tree | 13bb0263c050862cf70c8908697bb71c55cde9a1 | |
parent | Moved memfs to root, permission refactor (diff) |
Add max file limit enforcing
-rw-r--r-- | snekbox/memfs.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/snekbox/memfs.py b/snekbox/memfs.py index 589a609..f6e2ca9 100644 --- a/snekbox/memfs.py +++ b/snekbox/memfs.py @@ -18,7 +18,7 @@ log = logging.getLogger(__name__) NAMESPACE_DIR = Path("/memfs") -NAMESPACE_DIR.mkdir(parents=True, exist_ok=True) +NAMESPACE_DIR.mkdir(exist_ok=True) NAMESPACE_DIR.chmod(0o711) # Execute only access for other users @@ -55,7 +55,7 @@ class MemFSOptions: # Size of the memory filesystem (per instance) MEMFS_SIZE = "32M" # Maximum number of files attachments will be scanned for - MAX_FILES = 2 + MAX_FILES = 6 # Maximum size of a file attachment (32 MB) MAX_FILE_SIZE = 32 * 1024 * 1024 @@ -113,8 +113,13 @@ class MemoryTempDir: def attachments(self) -> Generator[FileAttachment, None, None]: """Return a list of attachments in the tempdir.""" # Look for any file starting with `output` + count = 0 for file in self.home.glob("output*"): + if count >= MemFSOptions.MAX_FILES: + log.warning("Maximum number of attachments reached, skipping remaining files") + break if file.is_file(): + count += 1 yield FileAttachment.from_path(file, MemFSOptions.MAX_FILE_SIZE) def cleanup(self) -> None: |