[clang] b5b33fb - [clang-format] Skip parsing a block if it's nested too deep
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 7 15:28:12 PDT 2022
Author: owenca
Date: 2022-06-07T15:28:03-07:00
New Revision: b5b33fbffb087f69f54b9a7bce70828ef6e82601
URL: https://github.com/llvm/llvm-project/commit/b5b33fbffb087f69f54b9a7bce70828ef6e82601
DIFF: https://github.com/llvm/llvm-project/commit/b5b33fbffb087f69f54b9a7bce70828ef6e82601.diff
LOG: [clang-format] Skip parsing a block if it's nested too deep
Fixes #55912.
Differential Revision: https://reviews.llvm.org/D127183
Added:
Modified:
clang/lib/Format/UnwrappedLineParser.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index 86b42c499b23b..aa1411d67799b 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -842,6 +842,10 @@ void UnwrappedLineParser::parseBlock(bool MustBeDeclaration, unsigned AddLevels,
unsigned InitialLevel = Line->Level;
nextToken(/*LevelDifference=*/AddLevels);
+ // Bail out if there are too many levels. Otherwise, the stack might overflow.
+ if (Line->Level > 300)
+ return;
+
if (MacroBlock && FormatTok->is(tok::l_paren))
parseParens();
More information about the cfe-commits
mailing list