From bc3f0364b8ee03c735f6de6e09095774c342a3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 28 Jun 2023 15:26:21 +0200 Subject: [PATCH] Fix #11812 (Crash: misra addon, infinite recursion) --- addons/misra_9.py | 3 ++- addons/test/misra/crash3.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 addons/test/misra/crash3.c diff --git a/addons/misra_9.py b/addons/misra_9.py index b4f780bba27..345cf27a404 100644 --- a/addons/misra_9.py +++ b/addons/misra_9.py @@ -476,7 +476,8 @@ def createRecordChildrenDefs(ed, var): valueType = ed.valueType if not valueType or not valueType.typeScope: return - + if valueType.pointer>=1: + return for variable in valueType.typeScope.varlist: if variable is var: continue diff --git a/addons/test/misra/crash3.c b/addons/test/misra/crash3.c new file mode 100644 index 00000000000..19583f009a5 --- /dev/null +++ b/addons/test/misra/crash3.c @@ -0,0 +1,30 @@ + + + + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + + +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; +