[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/5] glr2.cc: fix container out-of-bounds access
From: |
Akim Demaille |
Subject: |
[PATCH 4/5] glr2.cc: fix container out-of-bounds access |
Date: |
Thu, 17 Sep 2020 19:40:57 +0200 |
From: Valentin Tolmer <valentin.tolmer@gmail.com>
Clang 10 with ASAN enabled reported errors in glr2.cc.
* data/skeletons/glr2.cc: here.
---
data/skeletons/glr2.cc | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
index 343489ab..b2dd6f23 100644
--- a/data/skeletons/glr2.cc
+++ b/data/skeletons/glr2.cc
@@ -2273,12 +2273,13 @@ public:
{
/* Standard special case: single stack. */
YYASSERT (yyk.get() == 0);
- glr_stack_item* yyrhs = yystateStack.topAt(yyk)->asItem();
- yystateStack.pop_back(static_cast<size_t>(yynrhs));
- yystateStack.setFirstTop(&yystateStack[yystateStack.size() -
1].getState());
+ glr_stack_item* yyrhs = yystateStack.firstTop()->asItem();
YY_REDUCE_PRINT ((true, yyrhs, yyk, yyrule, yyparser]b4_user_args[));
- return yyuserAction (yyrule, yynrhs, yyrhs,
+ YYRESULTTAG res = yyuserAction (yyrule, yynrhs, yyrhs,
yyvalp]b4_locations_if([, yylocp])[);
+ yystateStack.pop_back(static_cast<size_t>(yynrhs));
+ yystateStack.setFirstTop(&yystateStack[yystateStack.size() -
1].getState());
+ return res;
}
else
{
--
2.28.0