postgres.git / summary / log / commit / refs
commit 88269df4da032bb1536d4291a13f3af4e1e599ba
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon Nov 11 17:20:08 2024 +0000
First released in: 18.0, 16.5, 17.1
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
src/pl/plperl/GNUmakefile | 2 +-
src/pl/plperl/meson.build | 2 +-
src/pl/plperl/text2macro.pl | 8 +++++---
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index f89314f2cdc..602cb243084 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -85,7 +85,7 @@ plperl_opmask.h: plperl_opmask.pl
perlchunks.h: $(PERLCHUNKS)
@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
diff --git a/src/pl/plperl/meson.build b/src/pl/plperl/meson.build
index 48210a91a38..1cfeb978f52 100644
--- a/src/pl/plperl/meson.build
+++ b/src/pl/plperl/meson.build
@@ -17,7 +17,7 @@ plperl_sources += custom_target('perlchunks.h',
input: files('plc_perlboot.pl', 'plc_trusted.pl'),
output: 'perlchunks.h',
capture: true,
- command: [perl, files('text2macro.pl'), '--strip=^(\#.*|\s*)$', '@INPUT@']
+ command: [perl, files('text2macro.pl'), '@INPUT@']
)
plperl_sources += custom_target('plperl_opmask.h',
diff --git a/src/pl/plperl/text2macro.pl b/src/pl/plperl/text2macro.pl
index 933632c0df9..954ff452bd8 100644
--- a/src/pl/plperl/text2macro.pl
+++ b/src/pl/plperl/text2macro.pl
@@ -15,14 +15,13 @@ Options:
--prefix=S - add prefix S to the names of the macros
--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
Reads one or more text files and outputs a corresponding series of C
pre-processor macro definitions. Each macro defines a string literal that
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
@@ -34,9 +33,12 @@ use Getopt::Long;
GetOptions(
'prefix=s' => \my $opt_prefix,
'name=s' => \my $opt_name,
- 'strip=s' => \my $opt_strip,
'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"
unless @ARGV;
[parent: ae340d031852]