From b64598763d82a935104aa74b8d1ba8575671a09a Mon Sep 17 00:00:00 2001 From: Vrganj Date: Sat, 23 Jan 2021 20:10:10 +0100 Subject: [PATCH] Stop appending to output if longer than limit --- shared/execute.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/shared/execute.js b/shared/execute.js index 6547ca8..526efdd 100644 --- a/shared/execute.js +++ b/shared/execute.js @@ -1,6 +1,8 @@ const { writeFileSync, unlinkSync } = require('fs'); const { spawn } = require('child_process'); +const OUTPUT_LIMIT = 65535; + function execute(language, source, stdin = '', args = []) { return new Promise(resolve => { const stamp = new Date().getTime(); @@ -20,11 +22,15 @@ function execute(language, source, stdin = '', args = []) { let output = ''; process.stderr.on('data', chunk => { + if (stderr.length >= OUTPUT_LIMIT) return; + stderr += chunk; output += chunk; }); process.stdout.on('data', chunk => { + if (stdout.length >= OUTPUT_LIMIT) return; + stdout += chunk; output += chunk; }); @@ -32,9 +38,9 @@ function execute(language, source, stdin = '', args = []) { process.on('exit', code => { unlinkSync(sourceFile); - stderr = stderr.trim().substring(0, 65535); - stdout = stdout.trim().substring(0, 65535); - output = output.trim().substring(0, 65535); + stderr = stderr.trim().substring(0, OUTPUT_LIMIT); + stdout = stdout.trim().substring(0, OUTPUT_LIMIT); + output = output.trim().substring(0, OUTPUT_LIMIT); resolve({ stdout,