[llvm] [MCParser] Fix some bound checking when scanning macro body (PR #219367)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 27 22:04:46 PDT 2026
https://github.com/MaskRay created https://github.com/llvm/llvm-project/pull/219367
None
>From 1d86db75d61ba4e829847b856ccc482528f01e4f Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Thu, 27 Aug 2026 21:50:32 -0700
Subject: [PATCH] [MCParser] Fix some bound checking when scanning macro body
---
llvm/lib/MC/MCParser/AsmParser.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 320a3d896e9d0..839dbca990578 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -2519,7 +2519,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, MCAsmMacro &Macro,
I += 2;
continue;
}
- if (Body[I + 1] == '(' && Body[I + 2] == ')') {
+ if (Body[I + 1] == '(' && I + 2 != End && Body[I + 2] == ')') {
I += 3;
continue;
}
@@ -2577,7 +2577,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &OS, MCAsmMacro &Macro,
}
const size_t Start = I;
- while (++I && isIdentifierChar(Body[I])) {
+ while (++I != End && isIdentifierChar(Body[I])) {
}
StringRef Token(Body.data() + Start, I - Start);
if (AltMacroMode) {
@@ -4902,8 +4902,8 @@ void AsmParser::checkForBadMacro(SMLoc DirectiveLoc, StringRef Name,
}
Pos += 2;
} else {
- unsigned I = Pos + 1;
- while (isIdentifierChar(Body[I]) && I + 1 != End)
+ size_t I = Pos + 1;
+ while (I != End && isIdentifierChar(Body[I]))
++I;
const char *Begin = Body.data() + Pos + 1;
@@ -4914,7 +4914,7 @@ void AsmParser::checkForBadMacro(SMLoc DirectiveLoc, StringRef Name,
break;
if (Index == NParameters) {
- if (Body[Pos + 1] == '(' && Body[Pos + 2] == ')')
+ if (Body[Pos + 1] == '(' && Pos + 2 != End && Body[Pos + 2] == ')')
Pos += 3;
else {
Pos = I;
More information about the llvm-commits
mailing list