From e011f2959f6fa36d8217a680ae68d09fc51ccfe9 Mon Sep 17 00:00:00 2001 From: Juerg Haefliger Date: Tue, 7 Feb 2023 08:36:06 +0100 Subject: [PATCH] UBUNTU: [Packaging] annotations: Fail on invalid lines Currently, invalid lines are silently ignored, which is not good. Fix this by raising an exception if the line can't be parsed. While at it, remove one level of nesting by using if-continue. Signed-off-by: Juerg Haefliger Signed-off-by: Andrea Righi --- debian/scripts/misc/kconfig/annotations.py | 53 ++++++++++++---------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/debian/scripts/misc/kconfig/annotations.py b/debian/scripts/misc/kconfig/annotations.py index 766405c48ec1..03b01baad46b 100644 --- a/debian/scripts/misc/kconfig/annotations.py +++ b/debian/scripts/misc/kconfig/annotations.py @@ -68,33 +68,38 @@ class Annotation(Config): include_fname = dirname(abspath(self.fname)) + '/' + m.group(1) include_data = self._load(include_fname) self._parse_body(include_data) - else: - # Handle policy and note lines - if re.match(r'.* (policy|note)<', line): - try: - conf = line.split(' ')[0] - if conf in self.config: - entry = self.config[conf] - else: - entry = {'policy': {}} + continue - match = False - m = re.match(r'.* policy<(.*?)>', line) - if m: - match = True - entry['policy'] |= literal_eval(m.group(1)) + # Handle policy and note lines + if re.match(r'.* (policy|note)<', line): + try: + conf = line.split(' ')[0] + if conf in self.config: + entry = self.config[conf] + else: + entry = {'policy': {}} - m = re.match(r'.* note<(.*?)>', line) - if m: - entry['oneline'] = match - match = True - entry['note'] = "'" + m.group(1).replace("'", '') + "'" + match = False + m = re.match(r'.* policy<(.*?)>', line) + if m: + match = True + entry['policy'] |= literal_eval(m.group(1)) - if not match: - raise Exception('syntax error') - self.config[conf] = entry - except Exception as e: - raise Exception(str(e) + f', line = {line}') + m = re.match(r'.* note<(.*?)>', line) + if m: + entry['oneline'] = match + match = True + entry['note'] = "'" + m.group(1).replace("'", '') + "'" + + if not match: + raise Exception('syntax error') + self.config[conf] = entry + except Exception as e: + raise Exception(str(e) + f', line = {line}') + continue + + # Invalid line + raise Exception(f'invalid line: {line}') """ Parse main annotations file, individual config options can be accessed via