diff --git a/bin/ruby-build b/bin/ruby-build index df1a7db5..7d6c45ca 100755 --- a/bin/ruby-build +++ b/bin/ruby-build @@ -841,6 +841,11 @@ else TMP="${TMPDIR%/}" fi +if [ ! -w "$TMP" ] || [ ! -x "$TMP" ]; then + echo "ruby-build: TMPDIR=$TMP is set to a non-accessible location" >&2 + exit 1 +fi + # Work around warnings building Ruby 2.0 on Clang 2.x: # pass -Wno-error=shorten-64-to-32 if the compiler accepts it. # diff --git a/test/build.bats b/test/build.bats index 4502dfc2..3fdf1acf 100644 --- a/test/build.bats +++ b/test/build.bats @@ -234,3 +234,21 @@ rubinius-2.0.0: --prefix=$INSTALL_ROOT bundle exec rake install OUT } + +@test "non-writable TMPDIR aborts build" { + export TMPDIR="${TMP}/build" + mkdir -p "$TMPDIR" + chmod -w "$TMPDIR" + + run_inline_definition <<<"" + assert_failure "ruby-build: TMPDIR=$TMPDIR is set to a non-accessible location" +} + +@test "non-executable TMPDIR aborts build" { + export TMPDIR="${TMP}/build" + mkdir -p "$TMPDIR" + chmod -x "$TMPDIR" + + run_inline_definition <<<"" + assert_failure "ruby-build: TMPDIR=$TMPDIR is set to a non-accessible location" +}