From 7defaf1fe5047b5c7b1f89fd225c0032a94a04a8 Mon Sep 17 00:00:00 2001 From: Greg Myers Date: Fri, 30 Apr 2021 13:27:58 -0600 Subject: [PATCH] Track curly brace level in extract_c_parameters https://github.com/david-a-wheeler/flawfinder/issues/25 https://gitlab.com/gitlab-org/gitlab/-/issues/327032 --- flawfinder.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flawfinder.py b/flawfinder.py index 3c72a3d..b55dabb 100644 --- a/flawfinder.py +++ b/flawfinder.py @@ -529,6 +529,7 @@ def extract_c_parameters(text, pos=0): parameters = [""] # Insert 0th entry, so 1st parameter is parameter[1]. currentstart = i parenlevel = 1 + curlylevel = 0 instring = 0 # 1=in double-quote, 2=in single-quote incomment = 0 while i < len(text): @@ -579,7 +580,11 @@ def extract_c_parameters(text, pos=0): # print " EXTRACT_C_PARAMETERS: ", text[pos:pos+80] # print " RESULTS: ", parameters return parameters - elif c == ';': + elif c == '{': + curlylevel += 1 + elif c == '}': + curlylevel -= 1 + elif c == ';' and curlylevel < 1: internal_warn( "Parsing failed to find end of parameter list; " "semicolon terminated it in %s" % text[pos:pos + 200])