From d68d9c50db4cdba32266c52e6546f1d5181948db Mon Sep 17 00:00:00 2001 From: Aldis Berjoza Date: Wed, 8 Aug 2018 22:23:23 +0300 Subject: Do not reencrypt symbolic links --- src/password-store.sh | 1 + tests/t0300-reencryption.sh | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/password-store.sh b/src/password-store.sh index 7264ffc..d89d455 100755 --- a/src/password-store.sh +++ b/src/password-store.sh @@ -108,6 +108,7 @@ reencrypt_path() { local prev_gpg_recipients="" gpg_keys="" current_keys="" index passfile local groups="$($GPG $PASSWORD_STORE_GPG_OPTS --list-config --with-colons | grep "^cfg:group:.*")" while read -r -d "" passfile; do + [[ -L $passfile ]] && continue local passfile_dir="${passfile%/*}" passfile_dir="${passfile_dir#$PREFIX}" passfile_dir="${passfile_dir#/}" diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh index 6d15364..3c88987 100755 --- a/tests/t0300-reencryption.sh +++ b/tests/t0300-reencryption.sh @@ -87,6 +87,15 @@ test_expect_success 'Reencryption subfolder multiple keys, move, deinit' ' [[ $(canonicalize_gpg_keys $KEY3 $KEY4 $KEY2) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/anotherfolder2/anotherfolder/cred1.gpg")" ]] ' +test_expect_success 'Reencryption skips links' ' + ln -s "$PASSWORD_STORE_DIR/folder/cred1.gpg" "$PASSWORD_STORE_DIR/folder/linked_cred.gpg" && + [[ -L $PASSWORD_STORE_DIR/folder/linked_cred.gpg ]] && + git add "$PASSWORD_STORE_DIR/folder/linked_cred.gpg" && + git commit "$PASSWORD_STORE_DIR/folder/linked_cred.gpg" -m "Added linked cred" && + "$PASS" init -p folder $KEY3 && + [[ -L $PASSWORD_STORE_DIR/folder/linked_cred.gpg ]] +' + #TODO: test with more varieties of move and copy! test_expect_success 'Password lived through all transformations' ' -- cgit v1.2.3