Merge pull request #3133 from overleaf/hb-fix-bibtex-error-crash

Stop bib log parser after 500 iterations per parser

GitOrigin-RevId: 415624c20154b4fd4054f166179cd455a7cc2d4d
This commit is contained in:
Hugh O'Brien 2020-08-25 14:09:22 +01:00 committed by Copybot
parent 7f5ac7a932
commit b48b937f26
2 changed files with 13 additions and 4 deletions

View file

@ -615,7 +615,7 @@ App.controller('PdfController', function(
function processBiber(log) {
const { errors, warnings } = BibLogParser.parse(log, {})
const all = [].concat(errors, warnings)
accumulateResults({ type: 'BibTeX', all, errors, warnings })
accumulateResults({ type: 'BibTeX:', all, errors, warnings })
}
// output the results

View file

@ -23,10 +23,19 @@ define(function() {
iterationCount = 0;
while (match = re.exec(text)) {
iterationCount += 1;
if (iterationCount >= 10000) {
return result;
}
newEntry = process(match);
// Too many log entries can cause browser crashes
// Construct a too many files error from the last match
const maxErrors = 100
if (iterationCount >= maxErrors) {
const level = newEntry.level + "s"
newEntry.message = `Over ${maxErrors} ${level} returned. Download raw logs to see full list`;
newEntry.line = undefined;
result.unshift(newEntry)
return [result, ""];
}
result.push(newEntry);
text = (match.input.slice(0, match.index)) + (match.input.slice(match.index + match[0].length + 1, match.input.length));
}