[PATCH] Do not add newline at the end of the password
Johannes Altmanninger
aclopte at gmail.com
Thu Apr 14 11:50:57 UTC 2022
On Thu, Apr 14, 2022 at 01:26:47PM +0200, Daniel Mach wrote:
> SaltStack strips leading/trailing whitespaces from the password [1],
> because pass adds a newline when entering passwords interactively.
SaltStack is removing too much. They should use the equivalent of
pass_show_output.removesuffix("\n").
>
> Pass is capable of storing multiline passwords which are stored as
> provided. That includes storing binary data as well. If such password
> has leading/traling whitespaces, they get stripped in SaltStack
> and the password becomes invalid.
>
> This change fixes the inconsistency by always storing the passwords
> as provided, with no extra characters added.
>
> To retain good user experience, a newline is printed to stderr after
> printing a password.
>
> [1] https://github.com/saltstack/salt/commit/2584df93e074155062bd934f23bb244613e20dd3
> ---
> src/password-store.sh | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/password-store.sh b/src/password-store.sh
> index 22e818f..48b3a79 100755
> --- a/src/password-store.sh
> +++ b/src/password-store.sh
> @@ -385,7 +385,8 @@ cmd_show() {
> if [[ -f $passfile ]]; then
> if [[ $clip -eq 0 && $qrcode -eq 0 ]]; then
> pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | $BASE64)" || exit $?
> - echo "$pass" | $BASE64 -d
> + echo -n "$pass" | $BASE64 -d
> + echo >&2
> else
> [[ $selected_line =~ ^[0-9]+$ ]] || die "Clip location '$selected_line' is not a number."
> pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | tail -n +${selected_line} | head -n 1)" || exit $?
> @@ -468,7 +469,7 @@ cmd_insert() {
> read -r -p "Retype password for $path: " -s password_again || exit 1
> echo
> if [[ $password == "$password_again" ]]; then
> - echo "$password" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
> + echo -n "$password" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
> break
> else
> die "Error: the entered passwords do not match."
> @@ -477,7 +478,7 @@ cmd_insert() {
> else
> local password
> read -r -p "Enter password for $path: " -e password
> - echo "$password" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
> + echo -n "$password" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
> fi
> git_add_file "$passfile" "Add given password for $path to store."
> }
> --
> 2.35.1
>
More information about the Password-Store
mailing list