From 378434a148558c6f2d80e430aee3d5c7c3773bf3 Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Mon, 30 Mar 2020 11:44:26 +0530 Subject: [PATCH] passwordstore: Honor equal sign in userpass passwordstore lookup plugin now can handle equal sign in user input Fixes: ansible/ansible#68265 Signed-off-by: Abhijeet Kasurde --- changelogs/fragments/passwordstore_fix.yml | 2 ++ lib/ansible/plugins/lookup/passwordstore.py | 2 +- .../targets/lookup_passwordstore/tasks/tests.yml | 13 +++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/passwordstore_fix.yml diff --git a/changelogs/fragments/passwordstore_fix.yml b/changelogs/fragments/passwordstore_fix.yml new file mode 100644 index 00000000000..3d54bce5b03 --- /dev/null +++ b/changelogs/fragments/passwordstore_fix.yml @@ -0,0 +1,2 @@ +bugfixes: +- Handle equal sign in password while using passwordstore lookup plugin. diff --git a/lib/ansible/plugins/lookup/passwordstore.py b/lib/ansible/plugins/lookup/passwordstore.py index 06f0931a12d..7bdbee864c9 100644 --- a/lib/ansible/plugins/lookup/passwordstore.py +++ b/lib/ansible/plugins/lookup/passwordstore.py @@ -156,7 +156,7 @@ class LookupModule(LookupBase): # next parse the optional parameters in keyvalue pairs try: for param in params[1:]: - name, value = param.split('=') + name, value = param.split('=', 1) if name not in self.paramvals: raise AnsibleAssertionError('%s not in paramvals' % name) self.paramvals[name] = value diff --git a/test/integration/targets/lookup_passwordstore/tasks/tests.yml b/test/integration/targets/lookup_passwordstore/tasks/tests.yml index 50937f7da2f..2b3a9315c67 100644 --- a/test/integration/targets/lookup_passwordstore/tasks/tests.yml +++ b/test/integration/targets/lookup_passwordstore/tasks/tests.yml @@ -47,3 +47,16 @@ assert: that: - readpass == newpass + +- name: Create a password with equal sign + set_fact: + newpass: "{{ lookup('passwordstore', 'test-pass-equal userpass=SimpleSample= create=yes') }}" + +- name: Fetch a password with equal sign + set_fact: + readpass: "{{ lookup('passwordstore', 'test-pass-equal') }}" + +- name: Verify password + assert: + that: + - readpass == newpass