diff --git a/debian/changelog b/debian/changelog index db4ce1aed..eddb24f7e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,7 @@ linux (4.18~rc7-1~exp1) UNRELEASED; urgency=medium * cpupower: Fix handling of noopt and nostrip build options * debian/bin/gencontrol_signed.py: Add certificate fingerprints to template metadata + * scripts/kernel-doc: Escape all literal braces in regexes (Closes: #905116) -- Uwe Kleine-König Sat, 21 Jul 2018 16:52:01 +0200 diff --git a/debian/patches/bugfix/all/scripts-kernel-doc-escape-all-literal-braces-in-rege.patch b/debian/patches/bugfix/all/scripts-kernel-doc-escape-all-literal-braces-in-rege.patch new file mode 100644 index 000000000..d953abd94 --- /dev/null +++ b/debian/patches/bugfix/all/scripts-kernel-doc-escape-all-literal-braces-in-rege.patch @@ -0,0 +1,96 @@ +From: Ben Hutchings +Date: Sun, 5 Aug 2018 23:44:24 +0800 +Subject: scripts/kernel-doc: Escape all literal braces in regexes +Bug-Debian: https://bugs.debian.org/905116 +Forwarded: https://marc.info/?l=linux-doc&m=153348608531181&w=2 + +Braces are usually metacharacters in regexes, used to specify a +number of repetitions or as part of an escape sequence. If this +interpretation is not possible then Perl currently treats them +as literal characters. + +Perl 5.28 has deprecated the literal interpretation of left braces, +and Perl 5.32 will remove it (resulting in a fatal error). + +Escape all left braces that are treated as literal characters. Also +escape literal right braces, for consistency and to avoid confusing +bracket-matching in text editors. + +References: https://bugs.debian.org/905116 +Signed-off-by: Ben Hutchings +--- + scripts/kernel-doc | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/scripts/kernel-doc b/scripts/kernel-doc +index 0057d8eafcc1..8f0f508a78e9 100755 +--- a/scripts/kernel-doc ++++ b/scripts/kernel-doc +@@ -1062,7 +1062,7 @@ sub dump_struct($$) { + my $x = shift; + my $file = shift; + +- if ($x =~ /(struct|union)\s+(\w+)\s*{(.*)}/) { ++ if ($x =~ /(struct|union)\s+(\w+)\s*\{(.*)\}/) { + my $decl_type = $1; + $declaration_name = $2; + my $members = $3; +@@ -1148,20 +1148,20 @@ sub dump_struct($$) { + } + } + } +- $members =~ s/(struct|union)([^\{\};]+)\{([^\{\}]*)}([^\{\}\;]*)\;/$newmember/; ++ $members =~ s/(struct|union)([^\{\};]+)\{([^\{\}]*)\}([^\{\}\;]*)\;/$newmember/; + } + + # Ignore other nested elements, like enums +- $members =~ s/({[^\{\}]*})//g; ++ $members =~ s/(\{[^\{\}]*\})//g; + + create_parameterlist($members, ';', $file, $declaration_name); + check_sections($file, $declaration_name, $decl_type, $sectcheck, $struct_actual); + + # Adjust declaration for better display +- $declaration =~ s/([{;])/$1\n/g; +- $declaration =~ s/}\s+;/};/g; ++ $declaration =~ s/([\{;])/$1\n/g; ++ $declaration =~ s/\}\s+;/};/g; + # Better handle inlined enums +- do {} while ($declaration =~ s/(enum\s+{[^}]+),([^\n])/$1,\n$2/); ++ do {} while ($declaration =~ s/(enum\s+\{[^\}]+),([^\n])/$1,\n$2/); + + my @def_args = split /\n/, $declaration; + my $level = 1; +@@ -1171,12 +1171,12 @@ sub dump_struct($$) { + $clause =~ s/\s+$//; + $clause =~ s/\s+/ /; + next if (!$clause); +- $level-- if ($clause =~ m/(})/ && $level > 1); ++ $level-- if ($clause =~ m/(\})/ && $level > 1); + if (!($clause =~ m/^\s*#/)) { + $declaration .= "\t" x $level; + } + $declaration .= "\t" . $clause . "\n"; +- $level++ if ($clause =~ m/({)/ && !($clause =~m/}/)); ++ $level++ if ($clause =~ m/(\{)/ && !($clause =~m/\}/)); + } + output_declaration($declaration_name, + 'struct', +@@ -1244,7 +1244,7 @@ sub dump_enum($$) { + # strip #define macros inside enums + $x =~ s@#\s*((define|ifdef)\s+|endif)[^;]*;@@gos; + +- if ($x =~ /enum\s+(\w+)\s*{(.*)}/) { ++ if ($x =~ /enum\s+(\w+)\s*\{(.*)\}/) { + $declaration_name = $1; + my $members = $2; + my %_members; +@@ -1785,7 +1785,7 @@ sub process_proto_type($$) { + } + + while (1) { +- if ( $x =~ /([^{};]*)([{};])(.*)/ ) { ++ if ( $x =~ /([^\{\};]*)([\{\};])(.*)/ ) { + if( length $prototype ) { + $prototype .= " " + } diff --git a/debian/patches/series b/debian/patches/series index c8ae3c390..851d5940c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -90,6 +90,7 @@ bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch debian/revert-objtool-fix-config_stack_validation-y-warning.patch bugfix/all/i40e-build-for-64-bit-targets-only.patch bugfix/all/netfilter-ipvs-Fix-invalid-bytes-in-IP_VS_MH_TAB_IND.patch +bugfix/all/scripts-kernel-doc-escape-all-literal-braces-in-rege.patch # Miscellaneous features features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch