emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 1d2551f 07/14: Fix auth-source-pass.el to properly


From: Nicolas Petton
Subject: [Emacs-diffs] master 1d2551f 07/14: Fix auth-source-pass.el to properly handle special inputs
Date: Tue, 5 Jun 2018 09:53:57 -0400 (EDT)

branch: master
commit 1d2551f8e70ab80a6f57ee11ab70f54aa916adcd
Author: Jelle Licht <address@hidden>
Commit: Nicolas Petton <address@hidden>

    Fix auth-source-pass.el to properly handle special inputs
    
    * lisp/auth-source-pass.el (auth-source-pass-search): Warn when
    passing multiple hosts in SPEC. Early return and warn when passing a
    wildcard as host in SPEC. Early return when host is nil.
    * test/lisp/auth-source-pass-tests.el (auth-source-pass-any-host,
    auth-source-pass-undefined-host): Add corresponding tests.
---
 lisp/auth-source-pass.el            | 12 ++++++++++--
 test/lisp/auth-source-pass-tests.el | 11 +++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index 96aefc8..461cba0 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -45,10 +45,18 @@
 See `auth-source-search' for details on SPEC."
   (cl-assert (or (null type) (eq type (oref backend type)))
              t "Invalid password-store search: %s %s")
-  (when (listp host)
+  (when (consp host)
+    (warn "auth-source-pass ignores all but first host in spec.")
     ;; Take the first non-nil item of the list of hosts
     (setq host (seq-find #'identity host)))
-  (list (auth-source-pass--build-result host port user)))
+  (cond ((eq host t)
+         (warn "auth-source-pass does not handle host wildcards.")
+         nil)
+        ((null host)
+         ;; Do not build a result, as none will match when HOST is nil
+         nil)
+        (t
+         (list (auth-source-pass--build-result host port user)))))
 
 (defun auth-source-pass--build-result (host port user)
   "Build auth-source-pass entry matching HOST, PORT and USER."
diff --git a/test/lisp/auth-source-pass-tests.el 
b/test/lisp/auth-source-pass-tests.el
index 0f07259..431e4e4 100644
--- a/test/lisp/auth-source-pass-tests.el
+++ b/test/lisp/auth-source-pass-tests.el
@@ -73,6 +73,17 @@ This function is intended to be set to `auth-source-debug`."
            (auth-source-pass--debug-log nil))
        ,@body)))
 
+(ert-deftest auth-source-pass-any-host ()
+  (auth-source-pass--with-store '(("foo" ("port" . "foo-port") ("host" . 
"foo-user"))
+                                  ("bar"))
+    (should-not (auth-source-pass-search :host t))))
+
+(ert-deftest auth-source-pass-undefined-host ()
+  (auth-source-pass--with-store '(("foo" ("port" . "foo-port") ("host" . 
"foo-user"))
+                                  ("bar"))
+    (should-not (auth-source-pass-search :host nil))))
+
+
 (ert-deftest auth-source-pass-find-match-matching-at-entry-name ()
   (auth-source-pass--with-store '(("foo"))
     (should (equal (auth-source-pass--find-match "foo" nil nil)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]