From cb461eb752766c34cec422110239fbae4e1765fd Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 28 Jun 2018 15:27:34 -0700 Subject: Tolerate base64 padding in secret --- otp.bash | 2 +- test/insert.t | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/otp.bash b/otp.bash index 2668d9a..55dbcb3 100755 --- a/otp.bash +++ b/otp.bash @@ -63,7 +63,7 @@ otp_parse_uri() { local params local IFS=\&; read -r -a params < <(echo "$p") ; unset IFS - pattern='^(.+)=(.+)$' + pattern='^([^=]+)=(.+)$' for param in "${params[@]}"; do if [[ "$param" =~ $pattern ]]; then case ${BASH_REMATCH[1]} in diff --git a/test/insert.t b/test/insert.t index 1c8ddb2..a8c6458 100755 --- a/test/insert.t +++ b/test/insert.t @@ -130,4 +130,13 @@ test_expect_success 'Insert from secret without passfile' ' echo [[ $("$PASS" show Example/alice@google.com) == "$uri" ]] ' +test_expect_success 'Tolerates padding in secret' ' + secret="JBSWY3DPEHPK3PXP==" + uri="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example" + + test_pass_init && + "$PASS" otp insert -s -i Example -a alice@google.com <<< "$secret" && + echo [[ $("$PASS" show Example/alice@google.com) == "$uri" ]] +' + test_done -- cgit v1.2.3