[PATCH] Do not add newline at the end of the password

Daniel Mach daniel.mach at suse.com
Thu Apr 14 12:20:44 UTC 2022


On 14. 04. 22 13:52, Byron Torres wrote:
> On Thu Apr 14, 2022 at 12:26 PM BST, Daniel Mach wrote:
> ->%-
>> -			echo "$pass" | $BASE64 -d
>> +			echo -n "$pass" | $BASE64 -d
>> +			echo >&2
> ->%-
>> -				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."
> ->%-
>> -		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."
> It should be noted that echo is notoriously buggy and unpredictable when
> it comes to '-x' options like '-n' or '-e'. Some echo implementations
> ignore or misused them.
>
> It is much more reliable to use printf.
>
> 	printf '%s' "$pass" | $BASE64 -d
> 	printf '\n' >&2
>
> 	printf '%s' "$password" | $GPG ...
>
> I'm not familiar with the source code, but I'd imagine virtually all
> instances of echo shouldn't be there, and should instead be printf
> statements. Perhaps pass(1) relies on the usage of specific shells,
> specific versions of said shells, and specific builtin implementations
> of POSIX utilities, namely bash and it's builtin echo. I'd say that
> isn't good. I digress.
>
> And worth noting, if one is to use certain non-POSIX syntax in printf,
> like '\xNN' hexadecimal representations, it is wise to use the installed
> printf, not the shell builtin printf.
>
> 	env printf '\x1b[31mRED TEXT\x1b[m\n'
>
I think this is out of scope of my patch, because pass uses 'echo -n' in 
several other places already and I'd have to change them as well.




More information about the Password-Store mailing list