mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Avoid bizarre meson behavior with backslashes in command arguments.
meson makes the backslashes in text2macro.pl's --strip argument
into forward slashes, effectively disabling comment stripping.
That hasn't caused us issues before, but it breaks the test case
for b7e3a52a8
. We don't really need the pattern to be adjustable,
so just hard-wire it into the script instead.
Context: https://github.com/mesonbuild/meson/issues/1564
Security: CVE-2024-10979
This commit is contained in:
@ -85,7 +85,7 @@ plperl_opmask.h: plperl_opmask.pl
|
|||||||
|
|
||||||
perlchunks.h: $(PERLCHUNKS)
|
perlchunks.h: $(PERLCHUNKS)
|
||||||
@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
|
@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
|
||||||
$(PERL) $(srcdir)/text2macro.pl --strip='^(\#.*|\s*)$$' $^ > $@
|
$(PERL) $(srcdir)/text2macro.pl $^ > $@
|
||||||
|
|
||||||
all: all-lib
|
all: all-lib
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ plperl_sources += custom_target('perlchunks.h',
|
|||||||
input: files('plc_perlboot.pl', 'plc_trusted.pl'),
|
input: files('plc_perlboot.pl', 'plc_trusted.pl'),
|
||||||
output: 'perlchunks.h',
|
output: 'perlchunks.h',
|
||||||
capture: true,
|
capture: true,
|
||||||
command: [perl, files('text2macro.pl'), '--strip=^(\#.*|\s*)$', '@INPUT@']
|
command: [perl, files('text2macro.pl'), '@INPUT@']
|
||||||
)
|
)
|
||||||
|
|
||||||
plperl_sources += custom_target('plperl_opmask.h',
|
plperl_sources += custom_target('plperl_opmask.h',
|
||||||
|
@ -15,14 +15,13 @@ Options:
|
|||||||
|
|
||||||
--prefix=S - add prefix S to the names of the macros
|
--prefix=S - add prefix S to the names of the macros
|
||||||
--name=S - use S as the macro name (assumes only one file)
|
--name=S - use S as the macro name (assumes only one file)
|
||||||
--strip=S - don't include lines that match perl regex S
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
Reads one or more text files and outputs a corresponding series of C
|
Reads one or more text files and outputs a corresponding series of C
|
||||||
pre-processor macro definitions. Each macro defines a string literal that
|
pre-processor macro definitions. Each macro defines a string literal that
|
||||||
contains the contents of the corresponding text file. The basename of the text
|
contains the contents of the corresponding text file. The basename of the text
|
||||||
file as capitalized and used as the name of the macro, along with an optional prefix.
|
file is capitalized and used as the name of the macro, along with an optional prefix.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@ -34,9 +33,12 @@ use Getopt::Long;
|
|||||||
GetOptions(
|
GetOptions(
|
||||||
'prefix=s' => \my $opt_prefix,
|
'prefix=s' => \my $opt_prefix,
|
||||||
'name=s' => \my $opt_name,
|
'name=s' => \my $opt_name,
|
||||||
'strip=s' => \my $opt_strip,
|
|
||||||
'selftest!' => sub { exit selftest() },) or exit 1;
|
'selftest!' => sub { exit selftest() },) or exit 1;
|
||||||
|
|
||||||
|
# This was once a command-line option, but meson is obstreperous
|
||||||
|
# about passing backslashes through custom targets.
|
||||||
|
my $opt_strip = '^(#.*|\s*)$';
|
||||||
|
|
||||||
die "No text files specified"
|
die "No text files specified"
|
||||||
unless @ARGV;
|
unless @ARGV;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user