tadfisher / pass-otp

A pass extension for managing one-time-password (OTP) tokens
GNU General Public License v3.0
1.28k stars 85 forks source link

Do not remove password when new line is missing #100

Closed vincentbernat closed 3 years ago

vincentbernat commented 5 years ago

If the password file doesn't end with a new line, the last line is ignored because read -r will return a non-zero status, while still setting the $line variable. Some implementations of pass, like gopass do not create a password file ending with a new line. Therefore, using pass otp append on these files will result in the password being remove from the file.

To fix that, we ensure we insert the new line if it is missing.

I have added a test, but this is not enough to catch the problem because pass will add the new line even when it is missing (for example, using echo -n | pass insert -e passfile won't help to trigger the bug).