lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Fri, 10 Sep 2021 11:12:27 +0900
From:   Masahiro Yamada <masahiroy@...nel.org>
To:     Ariel Marcovitch <arielmarcovitch@...il.com>
Cc:     Valentin Rothberg <valentinrothberg@...il.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Linux Kbuild mailing list <linux-kbuild@...r.kernel.org>
Subject: Re: [PATCH v2] checkkconfigsymbols.py: Remove skipping of help lines
 in parse_kconfig_file

On Thu, Sep 2, 2021 at 1:50 AM Ariel Marcovitch
<arielmarcovitch@...il.com> wrote:
>
> When parsing Kconfig files to find symbol definitions and references,
> lines after a 'help' line are skipped until a new config definition
> starts.
>
> However, Kconfig statements can actually be after a help section, as
> long as these have shallower indentation. These are skipped by the
> parser.
>
> This means that symbols referenced in this kind of statements are
> ignored by this function and thus are not considered undefined
> references in case the symbol is not defined.
>
> Remove the 'skip' logic entirely, as it is not needed if we just use the
> STMT regex to find the end of help lines.
>
> However, this means that keywords that appear as part of the help
> message (i.e. with the same indentation as the help lines) it will be
> considered as a reference/definition. This can happen now as well, but
> only with REGEX_KCONFIG_DEF lines. Also, the keyword must have a SYMBOL
> after it, which probably means that someone referenced a config in the
> help so it seems like a bonus :)
>
> The real solution is to keep track of the indentation when a the first
> help line in encountered and then handle DEF and STMT lines only if the
> indentation is shallower.
>
> Signed-off-by: Ariel Marcovitch <arielmarcovitch@...il.com>
> ---

Applied to linux-kbuild. Thanks.


>  scripts/checkkconfigsymbols.py | 8 --------
>  1 file changed, 8 deletions(-)
>
> diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
> index b9b0f15e5880..4f9dc98f3f60 100755
> --- a/scripts/checkkconfigsymbols.py
> +++ b/scripts/checkkconfigsymbols.py
> @@ -34,7 +34,6 @@ REGEX_SOURCE_SYMBOL = re.compile(SOURCE_SYMBOL)
>  REGEX_KCONFIG_DEF = re.compile(DEF)
>  REGEX_KCONFIG_EXPR = re.compile(EXPR)
>  REGEX_KCONFIG_STMT = re.compile(STMT)
> -REGEX_KCONFIG_HELP = re.compile(r"^\s+help\s*$")
>  REGEX_FILTER_SYMBOLS = re.compile(r"[A-Za-z0-9]$")
>  REGEX_NUMERIC = re.compile(r"0[xX][0-9a-fA-F]+|[0-9]+")
>  REGEX_QUOTES = re.compile("(\"(.*?)\")")
> @@ -432,7 +431,6 @@ def parse_kconfig_file(kfile):
>      lines = []
>      defined = []
>      references = []
> -    skip = False
>
>      if not os.path.exists(kfile):
>          return defined, references
> @@ -448,12 +446,6 @@ def parse_kconfig_file(kfile):
>          if REGEX_KCONFIG_DEF.match(line):
>              symbol_def = REGEX_KCONFIG_DEF.findall(line)
>              defined.append(symbol_def[0])
> -            skip = False
> -        elif REGEX_KCONFIG_HELP.match(line):
> -            skip = True
> -        elif skip:
> -            # ignore content of help messages
> -            pass
>          elif REGEX_KCONFIG_STMT.match(line):
>              line = REGEX_QUOTES.sub("", line)
>              symbols = get_symbols_in_line(line)
>
> base-commit: 087e856cfb76e9eef9a3a6e000854794f3c36e24
> --
> 2.25.1
>


-- 
Best Regards
Masahiro Yamada

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ