commit 7e6fa590cc4d5ca53615bbe7889a57d2fcbb5a96
parent dde34d272a1221a1a62c5a935fa29434e12b236c
Author: Florian Dold <dold@taler.net>
Date: Thu, 20 Aug 2026 19:52:48 +0200
backenddb: harden generated SQL preprocessing
Diffstat:
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/backenddb/sql-schema/meson.build b/src/backenddb/sql-schema/meson.build
@@ -158,6 +158,9 @@ custom_target(
'gen-merchantdb-merchant_0036.sql',
input: [
'merchant-0036.sql.in',
+ '../create_tables.sql',
+ '../pg_create_instance_schema.sql',
+ '../pg_fixup_instance_schema.sql',
'merchant-0036-init.sql.fragment',
'merchant-0036-copy.sql.fragment',
'merchant-0036-drop.sql.fragment',
diff --git a/src/backenddb/sql-schema/preprocess-sql.sh b/src/backenddb/sql-schema/preprocess-sql.sh
@@ -39,12 +39,26 @@ cat <<'EOF'
--
EOF
-echo "-- generated by" $(basename $0)
-for n in $@
+echo "-- generated by" "$(basename "$0")"
+for n in "$@"
do
- echo "-- generated from" $(basename $n)
+ echo "-- generated from" "$(basename "$n")"
done
echo "--"
# Pre-process with cpp and remove SQL comments and empty lines
-gcc -I $(dirname $1) -E -P -undef - < $1 2>/dev/null | sed -e "s/--.*//" | awk 'NF'
+preprocessed=$(mktemp "${TMPDIR:-/tmp}/merchant-sql.XXXXXX")
+trap 'rm -f "$preprocessed"' 0
+trap 'exit 1' HUP INT TERM
+
+gcc -I "$(dirname "$1")" \
+ -E -P -undef - \
+ < "$1" \
+ > "$preprocessed" \
+ 2>/dev/null
+
+awk '{
+ sub(/--.*/, "")
+ if (NF)
+ print
+}' "$preprocessed"