]> git.eshelyaron.com Git - emacs.git/commitdiff
Disable auth-source-pass-extra-query-keywords by default
authorF. Jason Park <jp@neverwas.me>
Fri, 25 Nov 2022 05:03:03 +0000 (21:03 -0800)
committerF. Jason Park <jp@neverwas.me>
Fri, 25 Nov 2022 13:37:01 +0000 (05:37 -0800)
* doc/misc/auth.texi: Mention subdomain matching in
`auth-source-pass-extra-query-keywords' section.
* etc/NEWS: Mention the loss of traditional auth-source-pass features
when `auth-source-pass-extra-query-keywords' is enabled.
* lisp/auth-source-pass (auth-source-pass-extra-query-keywords): Set
default to nil.  Mention domain matching in doc string.
(auth-source-pass--match-regexp): Allow username to contain "@".
* lisp/erc/erc-compat.el:
(erc-compat--29-auth-source-pass--retrieve-parsed): Adjust regexp.
* test/lisp/auth-source-pass-tests.el
(auth-source-pass-extra-query-keywords--suffixed-user): make plain
username more email-like.
(Bug#58985.)

doc/misc/auth.texi
etc/NEWS
lisp/auth-source-pass.el
lisp/erc/erc-compat.el
test/lisp/auth-source-pass-tests.el

index 872e5f88f5546844f1d4ddf29a42e9e0660aa880..83728be0a54ca4c2c74a37f761274e39d0b59bf2 100644 (file)
@@ -560,11 +560,12 @@ favors the @samp{rms@@gnu.org.gpg} form for usernames over the
 param was provided.
 
 In general, if you prefer idiosyncrasies traditionally exhibited by
-this backend, such as prioritizing field count in a filename, try
-setting this option to @code{nil}.  But, if you experience problems
-predicting the outcome of searches relative to other auth-source
-backends or encounter code expecting to query multiple backends
-uniformly, try flipping it back to @code{t} (the default).
+this backend, such as prioritizing field count in a filename or
+matching against subdomain labels, keep this option set to @code{nil}
+(the default).  But, if you experience problems predicting the outcome
+of searches relative to other auth-source backends or encounter code
+expecting to query multiple backends uniformly, try flipping it to
+@code{t}.
 @end defvar
 
 @node Help for developers
index 7b64752f46c19e8bb4cd9f23aac34e5c65d4b811..0ffc849fecafed0ff879dcf15007c9c5f227c3ae 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1410,7 +1410,8 @@ database stored on disk.
 *** New user option 'auth-source-pass-extra-query-keywords'.
 Whether to recognize additional keyword params, like ':max' and
 ':require', as well as accept lists of query terms paired with
-applicable keywords.
+applicable keywords.  This disables most known behavioral quirks
+unique to auth-source-pass, such as wildcard subdomain matching.
 
 ** Dired
 
index dc274843e102ef5a349f62d5d85d60a7acf1227b..74d3808448065f60645511aba58605e0fa6ae5c3 100644 (file)
   :type 'string
   :version "27.1")
 
-(defcustom auth-source-pass-extra-query-keywords t
+(defcustom auth-source-pass-extra-query-keywords nil
   "Whether to consider additional keywords when performing a query.
 Specifically, when the value is t, recognize the `:max' and
 `:require' keywords and accept lists of query parameters for
-certain keywords, such as `:host' and `:user'.  Also, wrap all
-returned secrets in a function and forgo any further results
+certain keywords, such as `:host' and `:user'.  Beyond that, wrap
+all returned secrets in a function and don't bother considering
+subdomains when matching hosts.  Also, forgo any further results
 filtering unless given an applicable `:require' argument.  When
 this option is nil, do none of that, and enact the narrowing
 behavior described toward the bottom of the Info node `(auth) The
@@ -110,7 +111,7 @@ HOSTS can be a string or a list of strings."
 (defun auth-source-pass--match-regexp (s)
   (rx-to-string ; autoloaded
    `(: (or bot "/")
-       (or (: (? (group-n 20 (+ (not (in ?\  ?/ ?@ ,s)))) "@")
+       (or (: (? (group-n 20 (+ (not (in ?\  ?/ ,s)))) "@")
               (group-n 10 (+ (not (in ?\  ?/ ?@ ,s))))
               (? ,s (group-n 30 (+ (not (in ?\  ?/ ,s))))))
            (: (group-n 11 (+ (not (in ?\  ?/ ?@ ,s))))
index 66a9a615e321bdf73af2993b8c4e39030f50f464..abbaafcd936acf1058f60959c9f7fa985f59dc95 100644 (file)
@@ -176,7 +176,7 @@ If START or END is negative, it counts from the end."
 ;; This hard codes `auth-source-pass-port-separator' to ":"
 (defun erc-compat--29-auth-source-pass--retrieve-parsed (seen e port-number-p)
   (when (string-match (rx (or bot "/")
-                          (or (: (? (group-n 20 (+ (not (in " /@")))) "@")
+                          (or (: (? (group-n 20 (+ (not (in " /:")))) "@")
                                  (group-n 10 (+ (not (in " /:@"))))
                                  (? ":" (group-n 30 (+ (not (in " /:"))))))
                               (: (group-n 11 (+ (not (in " /:@"))))
index 6e6671efca574ba5569a0e0422643d489852e17d..1107e09b51bb0eefbe02fb0369c6d265f0e8e209 100644 (file)
@@ -697,29 +697,29 @@ machine Libera.Chat password b
 ;; with slightly more realistic and less legible values.
 
 (ert-deftest auth-source-pass-extra-query-keywords--suffixed-user ()
-  (let ((store (sort (copy-sequence '(("x.com:42/bar" (secret . "a"))
-                                      ("bar@x.com" (secret . "b"))
+  (let ((store (sort (copy-sequence '(("x.com:42/b@r" (secret . "a"))
+                                      ("b@r@x.com" (secret . "b"))
                                       ("x.com" (secret . "?"))
-                                      ("bar@y.org" (secret . "c"))
+                                      ("b@r@y.org" (secret . "c"))
                                       ("fake.com" (secret . "?"))
-                                      ("fake.com/bar" (secret . "d"))
-                                      ("y.org/bar" (secret . "?"))
-                                      ("bar@fake.com" (secret . "e"))))
+                                      ("fake.com/b@r" (secret . "d"))
+                                      ("y.org/b@r" (secret . "?"))
+                                      ("b@r@fake.com" (secret . "e"))))
                      (lambda (&rest _) (zerop (random 2))))))
     (auth-source-pass--with-store store
       (auth-source-pass-enable)
       (let* ((auth-source-pass-extra-query-keywords t)
              (results (auth-source-search :host '("x.com" "fake.com" "y.org")
-                                          :user "bar"
+                                          :user "b@r"
                                           :require '(:user) :max 5)))
         (dolist (result results)
           (setf (plist-get result :secret) (auth-info-password result)))
         (should (equal results
-                       '((:host "x.com" :user "bar" :secret "b")
-                         (:host "x.com" :user "bar" :port "42" :secret "a")
-                         (:host "fake.com" :user "bar" :secret "e")
-                         (:host "fake.com" :user "bar" :secret "d")
-                         (:host "y.org" :user "bar" :secret "c"))))))))
+                       '((:host "x.com" :user "b@r" :secret "b")
+                         (:host "x.com" :user "b@r" :port "42" :secret "a")
+                         (:host "fake.com" :user "b@r" :secret "e")
+                         (:host "fake.com" :user "b@r" :secret "d")
+                         (:host "y.org" :user "b@r" :secret "c"))))))))
 
 ;; This is a more distilled version of `suffixed-user', above.  It
 ;; better illustrates that search order takes precedence over "/user"