unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#22027: 25.1.50; read-passwd fail to return default password
@ 2015-11-27  9:53 Tino Calancha
       [not found] ` <handler.22027.B.14486178085232.ack@debbugs.gnu.org>
  2016-05-09  3:26 ` bug#22027: 25.1.50; Return uncorrupted default string Tino Calancha
  0 siblings, 2 replies; 7+ messages in thread
From: Tino Calancha @ 2015-11-27  9:53 UTC (permalink / raw)
  To: 22027

[-- Attachment #1: Type: text/plain, Size: 2082 bytes --]


* lisp/subr.el (read-passwd):
read-passwd returns string consisting of (length password)
NULL characters, when:
*) first argument non-nil,
*) second argument string != "",
*) user accepts the default password.


emacs -Q:

(read-passwd "pass: " t "my-pass") RET RET
"--1468197610-674703064-1448617983=:26866
Content-Type: text/plain; charset=US-ASCII; name=subr.patch
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.LRH.2.20.1511271853030.26866@calancha-ilc.kek.jp>
Content-Description: 
Content-Disposition: attachment; filename=subr.patch

KioqIGxpc3Avc3Vici5lbAkgICAgICAgIDIwMTUtMTEtMTggMTE6MDI6MzMu
NzAzMTMwODUwICswOTAwDQotLS0gbGlzcC9zdWJyX3BhdGNoZWQuZWwJMjAx
NS0xMS0yNyAxODo0MTowMy41MTAwMzQ3NzkgKzA5MDANCioqKioqKioqKioq
KioqKg0KKioqIDIxMTQsMjEyMSAqKioqDQogICAgICAgICAgICAgICAgICAo
c2Vjb25kIChyZWFkLXBhc3N3ZCAiQ29uZmlybSBwYXNzd29yZDogIiBuaWwg
ZGVmYXVsdCkpKQ0KICAgICAgICAgICAgICAoaWYgKGVxdWFsIGZpcnN0IHNl
Y29uZCkNCiAgICAgICAgICAgICAgICAgIChwcm9nbg0KISAgICAgICAgICAg
ICAgICAgICAoYW5kIChhcnJheXAgc2Vjb25kKSAoY2xlYXItc3RyaW5nIHNl
Y29uZCkpDQohICAgICAgICAgICAgICAgICAgIChzZXRxIHN1Y2Nlc3MgZmly
c3QpKQ0KICAgICAgICAgICAgICAgIChhbmQgKGFycmF5cCBmaXJzdCkgKGNs
ZWFyLXN0cmluZyBmaXJzdCkpDQogICAgICAgICAgICAgICAgKGFuZCAoYXJy
YXlwIHNlY29uZCkgKGNsZWFyLXN0cmluZyBzZWNvbmQpKQ0KICAgICAgICAg
ICAgICAgIChtZXNzYWdlICJQYXNzd29yZCBub3QgcmVwZWF0ZWQgYWNjdXJh
dGVseTsgcGxlYXNlIHN0YXJ0IG92ZXIiKQ0KLS0tIDIxMTQsMjEyMSAtLS0t
DQogICAgICAgICAgICAgICAgICAoc2Vjb25kIChyZWFkLXBhc3N3ZCAiQ29u
ZmlybSBwYXNzd29yZDogIiBuaWwgZGVmYXVsdCkpKQ0KICAgICAgICAgICAg
ICAoaWYgKGVxdWFsIGZpcnN0IHNlY29uZCkNCiAgICAgICAgICAgICAgICAg
IChwcm9nbg0KISAJCSAgKHNldHEgc3VjY2VzcyAoYXBwbHkgJ3N0cmluZyAo
YXBwZW5kIGZpcnN0IG5pbCkpKQ0KISAgICAgICAgICAgICAgICAgICAoYW5k
IChhcnJheXAgc2Vjb25kKSAoY2xlYXItc3RyaW5nIHNlY29uZCkpKQ0KICAg
ICAgICAgICAgICAgIChhbmQgKGFycmF5cCBmaXJzdCkgKGNsZWFyLXN0cmlu
ZyBmaXJzdCkpDQogICAgICAgICAgICAgICAgKGFuZCAoYXJyYXlwIHNlY29u
ZCkgKGNsZWFyLXN0cmluZyBzZWNvbmQpKQ0KICAgICAgICAgICAgICAgICht
ZXNzYWdlICJQYXNzd29yZCBub3QgcmVwZWF0ZWQgYWNjdXJhdGVseTsgcGxl
YXNlIHN0YXJ0IG92ZXIiKQ0K

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#22027: Acknowledgement (25.1.50; read-passwd fail to return default password)
       [not found] ` <handler.22027.B.14486178085232.ack@debbugs.gnu.org>
@ 2015-11-27 10:16   ` Constantino Calancha
  0 siblings, 0 replies; 7+ messages in thread
From: Constantino Calancha @ 2015-11-27 10:16 UTC (permalink / raw)
  To: 22027

[-- Attachment #1: Type: text/plain, Size: 0 bytes --]



[-- Attachment #2: subr.patch --]
[-- Type: application/octet-stream, Size: 1077 bytes --]

*** lisp/subr.el	        2015-11-18 11:02:33.703130850 +0900
--- lisp/subr_patched.el	2015-11-27 18:41:03.510034779 +0900
***************
*** 2114,2121 ****
                  (second (read-passwd "Confirm password: " nil default)))
              (if (equal first second)
                  (progn
!                   (and (arrayp second) (clear-string second))
!                   (setq success first))
                (and (arrayp first) (clear-string first))
                (and (arrayp second) (clear-string second))
                (message "Password not repeated accurately; please start over")
--- 2114,2121 ----
                  (second (read-passwd "Confirm password: " nil default)))
              (if (equal first second)
                  (progn
! 		  (setq success (apply 'string (append first nil)))
!                   (and (arrayp second) (clear-string second)))
                (and (arrayp first) (clear-string first))
                (and (arrayp second) (clear-string second))
                (message "Password not repeated accurately; please start over")

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#22027: 25.1.50; Return uncorrupted default string
  2015-11-27  9:53 bug#22027: 25.1.50; read-passwd fail to return default password Tino Calancha
       [not found] ` <handler.22027.B.14486178085232.ack@debbugs.gnu.org>
@ 2016-05-09  3:26 ` Tino Calancha
  2017-06-04  3:51   ` npostavs
  1 sibling, 1 reply; 7+ messages in thread
From: Tino Calancha @ 2016-05-09  3:26 UTC (permalink / raw)
  To: 22027; +Cc: Tino Calancha


>*) first argument non-nil,
>*) second argument string != "",
Should read:
*) second argument non-nil,
*) third argument string != "",



In GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.30)
  of 2016-05-06 built on calancha-pc
Repository revision: 80bea210ff14a64daa1d71765983aa3baa149555


From 1ced98ba1a548749c119a93858f82f1210fe81bc Mon Sep 17 00:00:00 2001
From: Tino Calancha <f92capac@gmail.com>
Date: Mon, 9 May 2016 12:01:31 +0900
Subject: [PATCH 1/3] Return uncorrupted default string

* lisp/subr.el (read-passwd): Return DEFAULT when
CONFIRM evaluates non-nil and user inputs the empty string
(Bug#22027).
---
  lisp/subr.el | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index 0fa6404..ef6af1d 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2152,9 +2152,9 @@ read-passwd
            (let ((first (read-passwd prompt nil default))
                  (second (read-passwd "Confirm password: " nil default)))
              (if (equal first second)
-                (progn
-                  (and (arrayp second) (clear-string second))
-                  (setq success first))
+                (prog1
+                  (setq success (copy-sequence first))
+                  (and (arrayp second) (clear-string second)))
                (and (arrayp first) (clear-string first))
                (and (arrayp second) (clear-string second))
                (message "Password not repeated accurately; please start over")
-- 
2.8.1

From 7124a681e17e4f33694e9f1c8ccb0261f6a0bf9c Mon Sep 17 00:00:00 2001
From: Tino Calancha <f92capac@gmail.com>
Date: Mon, 9 May 2016 12:03:18 +0900
Subject: [PATCH 2/3] * lisp/subr.el (read-passwd): Clear also first password.

---
  lisp/subr.el | 1 +
  1 file changed, 1 insertion(+)

diff --git a/lisp/subr.el b/lisp/subr.el
index ef6af1d..5c32299 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2154,6 +2154,7 @@ read-passwd
              (if (equal first second)
                  (prog1
                    (setq success (copy-sequence first))
+                  (and (arrayp first) (clear-string first))
                    (and (arrayp second) (clear-string second)))
                (and (arrayp first) (clear-string first))
                (and (arrayp second) (clear-string second))
-- 
2.8.1

From e3aa5b5d30b901c2533538b3a9d0d5bd69493cf0 Mon Sep 17 00:00:00 2001
From: Tino Calancha <f92capac@gmail.com>
Date: Mon, 9 May 2016 12:08:02 +0900
Subject: [PATCH 3/3] * lisp/subr.el (read-passwd): Clear non-empty passwords.

---
  lisp/subr.el | 10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index 5c32299..344c416 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2153,11 +2153,11 @@ read-passwd
                  (second (read-passwd "Confirm password: " nil default)))
              (if (equal first second)
                  (prog1
-                  (setq success (copy-sequence first))
-                  (and (arrayp first) (clear-string first))
-                  (and (arrayp second) (clear-string second)))
-              (and (arrayp first) (clear-string first))
-              (and (arrayp second) (clear-string second))
+                    (setq success (copy-sequence first))
+                  (when (and (arrayp first)
+                             (not (string= first "")))
+                    (clear-string first)
+                    (clear-string second)))
                (message "Password not repeated accurately; please start over")
                (sit-for 1))))
          success)
-- 
2.8.1






^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#22027: 25.1.50; Return uncorrupted default string
  2016-05-09  3:26 ` bug#22027: 25.1.50; Return uncorrupted default string Tino Calancha
@ 2017-06-04  3:51   ` npostavs
  2017-06-05  0:22     ` Tino Calancha
  0 siblings, 1 reply; 7+ messages in thread
From: npostavs @ 2017-06-04  3:51 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 22027

[-- Attachment #1: Type: text/plain, Size: 359 bytes --]

Tino Calancha <f92capac@gmail.com> writes:

> +                    (setq success (copy-sequence first))
> +                  (when (and (arrayp first)
> +                             (not (string= first "")))
> +                    (clear-string first)
> +                    (clear-string second)))

I think that is too complicated, how about this instead:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 960 bytes --]

From 739ab77ca99a57f10088aa8a9f2c079c1727a071 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs@gmail.com>
Date: Sat, 3 Jun 2017 23:41:53 -0400
Subject: [PATCH v1] * lisp/subr.el (read-passwd): Don't delete return value
 (Bug#22027).

---
 lisp/subr.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index 9b3e53b70b..76c13a8d23 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2268,7 +2268,7 @@ (defun read-passwd (prompt &optional confirm default)
                 (second (read-passwd "Confirm password: " nil default)))
             (if (equal first second)
                 (progn
-                  (and (arrayp second) (clear-string second))
+                  (and (arrayp second) (not (eq first second)) (clear-string second))
                   (setq success first))
               (and (arrayp first) (clear-string first))
               (and (arrayp second) (clear-string second))
-- 
2.11.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#22027: 25.1.50; Return uncorrupted default string
  2017-06-04  3:51   ` npostavs
@ 2017-06-05  0:22     ` Tino Calancha
  2017-06-05  0:39       ` Tino Calancha
  0 siblings, 1 reply; 7+ messages in thread
From: Tino Calancha @ 2017-06-05  0:22 UTC (permalink / raw)
  To: npostavs; +Cc: Tino Calancha, 22027



On Sat, 3 Jun 2017, npostavs@users.sourceforge.net wrote:

> Tino Calancha <f92capac@gmail.com> writes:
>
>> +                    (setq success (copy-sequence first))
>> +                  (when (and (arrayp first)
>> +                             (not (string= first "")))
>> +                    (clear-string first)
>> +                    (clear-string second)))
>
> I think that is too complicated, how about this instead:
Yes, your is better.  Thank you.
We might add a test as well:

commit eb7fdeefadf08d7a781bee60df45fb045b582930
Author: Tino Calancha <tino.calancha@gmail.com>
Date:   Mon Jun 5 09:18:55 2017 +0900

     * test/lisp/subr-tests.el (subr-tests-bug22027): Add test.

diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el
index c0bfd40f80..81f61220d3 100644
--- a/test/lisp/subr-tests.el
+++ b/test/lisp/subr-tests.el
@@ -28,6 +28,7 @@
  ;;; Code:

  (require 'ert)
+(eval-when-compile (require 'cl-lib))

  (ert-deftest let-when-compile ()
    ;; good case
@@ -316,5 +317,13 @@ subr-tests--this-file
    (should-not (method-files 'subr-tests--undefined-generic))
    (should-not (method-files 'subr-tests--generic-without-methods)))

+(ert-deftest subr-tests-bug22027 ()
+  "Test for http://debbugs.gnu.org/22027 ."
+  (cl-letf* ((default "foo")
+             ((symbol-function 'read-string)
+              (lambda (&rest args) (mapconcat #'string default ""))))
+    (should (string= default (read-passwd "pass: " 'confirm default)))))
+
+
  (provide 'subr-tests)
  ;;; subr-tests.el ends here





^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#22027: 25.1.50; Return uncorrupted default string
  2017-06-05  0:22     ` Tino Calancha
@ 2017-06-05  0:39       ` Tino Calancha
  2017-06-05 23:03         ` npostavs
  0 siblings, 1 reply; 7+ messages in thread
From: Tino Calancha @ 2017-06-05  0:39 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 22027, npostavs



On Mon, 5 Jun 2017, Tino Calancha wrote:

> We might add a test as well:
but my previous test is wrong: it works before we apply any patch :-)
The following looks right:

commit 3b255c1b04a87442fc8293323f2c827dd44b038a
Author: Tino Calancha <tino.calancha@gmail.com>
Date:   Mon Jun 5 09:35:29 2017 +0900

     * test/lisp/subr-tests.el (subr-tests-bug22027): Add test.

diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el
index c0bfd40f80..54f4ab5d1b 100644
--- a/test/lisp/subr-tests.el
+++ b/test/lisp/subr-tests.el
@@ -28,6 +28,7 @@
  ;;; Code:

  (require 'ert)
+(eval-when-compile (require 'cl-lib))

  (ert-deftest let-when-compile ()
    ;; good case
@@ -316,5 +317,14 @@ subr-tests--this-file
    (should-not (method-files 'subr-tests--undefined-generic))
    (should-not (method-files 'subr-tests--generic-without-methods)))

+(ert-deftest subr-tests-bug22027 ()
+  "Test for http://debbugs.gnu.org/22027 ."
+  (let ((default "foo") res)
+    (cl-letf (((symbol-function 'read-string)
+               (lambda (_prompt _init _hist def) def)))
+      (setq res (read-passwd "pass: " 'confirm (mapconcat #'string default "")))
+      (should (string= default res)))))
+
+
  (provide 'subr-tests)
  ;;; subr-tests.el ends here





^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#22027: 25.1.50; Return uncorrupted default string
  2017-06-05  0:39       ` Tino Calancha
@ 2017-06-05 23:03         ` npostavs
  0 siblings, 0 replies; 7+ messages in thread
From: npostavs @ 2017-06-05 23:03 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 22027

tags 22027 fixed
close 22027 26.1
quit

Tino Calancha <f92capac@gmail.com> writes:

>> We might add a test as well:
> but my previous test is wrong: it works before we apply any patch :-)
> The following looks right:

Thanks, pushed to master [1: 695d50fa0a], [2: 882f81fdb4].

[1: 695d50fa0a]: 2017-06-05 18:57:50 -0400
  * test/lisp/subr-tests.el (subr-tests-bug22027): Add test.
  http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=695d50fa0a11c6bd98f9f4a9b5a2905d33282316

[2: 882f81fdb4]: 2017-06-05 18:57:32 -0400
  * lisp/subr.el (read-passwd): Don't delete return value (Bug#22027).
  http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=882f81fdb4ffba773af775d6d6f8920f23163e72





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-06-05 23:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-27  9:53 bug#22027: 25.1.50; read-passwd fail to return default password Tino Calancha
     [not found] ` <handler.22027.B.14486178085232.ack@debbugs.gnu.org>
2015-11-27 10:16   ` bug#22027: Acknowledgement (25.1.50; read-passwd fail to return default password) Constantino Calancha
2016-05-09  3:26 ` bug#22027: 25.1.50; Return uncorrupted default string Tino Calancha
2017-06-04  3:51   ` npostavs
2017-06-05  0:22     ` Tino Calancha
2017-06-05  0:39       ` Tino Calancha
2017-06-05 23:03         ` npostavs

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).