Skip to content

Commit

Permalink
[Fix] fix directory traversal when workdir path is not readable
Browse files Browse the repository at this point in the history
  • Loading branch information
zlotnleo authored and ljharb committed Apr 8, 2023
1 parent 44e1d9c commit 0d9b5c2
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
4 changes: 2 additions & 2 deletions nvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ nvm_tree_contains_path() {
nvm_find_project_dir() {
local path_
path_="${PWD}"
while [ "${path_}" != "" ] && [ ! -f "${path_}/package.json" ] && [ ! -d "${path_}/node_modules" ]; do
while [ "${path_}" != "" ] && [ "${path_}" != '.' ] && [ ! -f "${path_}/package.json" ] && [ ! -d "${path_}/node_modules" ]; do
path_=${path_%/*}
done
nvm_echo "${path_}"
Expand All @@ -428,7 +428,7 @@ nvm_find_project_dir() {
nvm_find_up() {
local path_
path_="${PWD}"
while [ "${path_}" != "" ] && [ ! -f "${path_}/${1-}" ]; do
while [ "${path_}" != "" ] && [ "${path_}" != '.' ] && [ ! -f "${path_}/${1-}" ]; do
path_=${path_%/*}
done
nvm_echo "${path_}"
Expand Down
3 changes: 3 additions & 0 deletions test/fast/Unit tests/nvm_find_project_dir
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@ ACTUAL="$(PWD=$TEST_DIR/no-nesting-n_m nvm_find_project_dir)"

ACTUAL="$(PWD=$TEST_DIR/no-nesting-pkg nvm_find_project_dir)"
[ "${ACTUAL}" = "$TEST_DIR/no-nesting-pkg" ] || die "no-nesting-pkg: got ${ACTUAL}"

ACTUAL="$(PWD="." nvm_find_project_dir)"
[ "${ACTUAL}" = "." ] || die "insufficient permissions for pwd: got ${ACTUAL}"
1 change: 1 addition & 0 deletions test/fast/Unit tests/nvm_find_up
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ TEST_DIR="$PWD"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 2 dirs up"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find in current dir"
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c/d nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find 1 level up from current dir"
[ "~$(PWD="." nvm_find_up 'test')" = "~." ] || die "failed to handle '.' output from pwd"

cleanup

0 comments on commit 0d9b5c2

Please sign in to comment.