From 2c5a576bc4f8e0ed19d9cfc9efc5538db826ffc3 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 19 Nov 2025 09:14:16 -0600 Subject: [PATCH 1/2] feat: sanitize the config file before sourcing --- lib/misc_funcs.sh | 13 +++++- test/clean_config_file.sh | 40 ++++++++++++++++++ .../unicode_chars/elixir_buildpack.config | Bin 0 -> 94 bytes 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100755 test/clean_config_file.sh create mode 100644 test/config_files/unicode_chars/elixir_buildpack.config diff --git a/lib/misc_funcs.sh b/lib/misc_funcs.sh index 974345b..b0b921b 100644 --- a/lib/misc_funcs.sh +++ b/lib/misc_funcs.sh @@ -87,7 +87,7 @@ function load_config() { if [ -f $custom_config_file ]; then - source $custom_config_file + source_file $custom_config_file assert_elixir_version_set $custom_config_file fi @@ -243,3 +243,14 @@ function fix_elixir_version() { exit 1 fi } + +function source_file() { + local bkup_file=$(mktemp /tmp/buildpack_source_file_bkup.XXXX) + + cp $1 $bkup_file + + # sanitize the file to avoid any non-printable characters + LC_ALL=C tr -cd '\11\12\15\40-\176' < $bkup_file > $1 + source $1 + mv $bkup_file $1 +} diff --git a/test/clean_config_file.sh b/test/clean_config_file.sh new file mode 100755 index 0000000..0f8bb43 --- /dev/null +++ b/test/clean_config_file.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +source $SCRIPT_DIR/.test_support.sh + +# include source file +source $SCRIPT_DIR/../lib/misc_funcs.sh + +# override functions +reset_test() { + EXIT_CODE=0 + OUTPUT_LINES=() +} + +exit() { + EXIT_CODE=$1 +} +output_line() { + OUTPUT_LINES+=("$1") +} + + +# TESTS +###################### +suite "clean_config_file" + + test "handles unicode characters gracefully" + + build_path="${SCRIPT_DIR}/config_files/unicode_chars" + load_config + + [ "$EXIT_CODE" == 0 ] + [ "${elixir_version}" == "v1.19.1" ] + [ "${erlang_version}" == "27.3.4" ] + + + +PASSED_ALL_TESTS=true diff --git a/test/config_files/unicode_chars/elixir_buildpack.config b/test/config_files/unicode_chars/elixir_buildpack.config new file mode 100644 index 0000000000000000000000000000000000000000..b773bb95cfebdc66f9d2ee462d85ed23648274ed GIT binary patch literal 94 zcmezWFO?yOA(Np3h>IBF8Oj(^fpjsDm(P&LV9Q|0pa;a3V3L=C3oM(%kO-7Z$D-PZ O!5pa47>G?6K&k<^Ul7Uw literal 0 HcmV?d00001 From 3ac946838c5d2d701e2d336fa3bd00df5d6c1197 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 19 Nov 2025 09:16:40 -0600 Subject: [PATCH 2/2] fix(ci): only test script files --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a037c0..0369d9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,4 +14,4 @@ jobs: - name: run tests run: | - for tst in test/*; do $tst; done + for tst in test/*.sh; do $tst; done