bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]