unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#1104: pasting a password
@ 2008-11-16  6:01 Chong Yidong
  0 siblings, 0 replies; 5+ messages in thread
From: Chong Yidong @ 2008-11-16  6:01 UTC (permalink / raw)
  To: emacs-devel; +Cc: 1104, jidanni

> DW> Login Name: myname
>
> DW> Login Password: {SHA}reallylongsodontaskmetotypeitinbyhandplease
>
> DW> Login URL: http://wiki.debian.org/UserPreferences
>
> The problem is C-y is just read as a raw character there at the
> mini buffer Password: prompt. emacs-w3m-version "1.4.263".
>
> KY> That's what `read-passwd' that is an Emacs function does.  In
> KY> the function definition, the special keys that it handles are
> KY> only C-h, C-u and C-? (see the doc string).

The following patch allows yanking into the password prompt (I haven't
changed the docstring of read-passwd, which needs doing).  What do
people think about the advisability of this?

Note, in particular, that we can detect any key that performs yank or
yank-pop by using `key-binding'---but it works only if the command is a
single-character key sequence.  That's fine for C-y, but fails if the
user has customized `yank' to a two-character sequence.  I don't see any
way around this, though.

Another shortcoming is that the user can no longer enter a literal C-y;
but this may be a negligble problem---currently, the user can't enter
C-u either, since C-u clears the field.


*** trunk/lisp/subr.el.~1.620.~	2008-11-06 01:49:41.000000000 -0500
--- trunk/lisp/subr.el	2008-11-16 00:48:31.000000000 -0500
***************
*** 1818,1838 ****
  		      (setq c (read-char-exclusive nil t))
  		      (and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
  	  (clear-this-command-keys)
! 	  (if (= c ?\C-u)
! 	      (progn
! 		(and (arrayp pass) (clear-string pass))
! 		(setq pass ""))
! 	    (if (and (/= c ?\b) (/= c ?\177))
! 		(let* ((new-char (char-to-string c))
! 		       (new-pass (concat pass new-char)))
! 		  (and (arrayp pass) (clear-string pass))
! 		  (clear-string new-char)
! 		  (setq c ?\0)
! 		  (setq pass new-pass))
! 	      (if (> (length pass) 0)
! 		  (let ((new-pass (substring pass 0 -1)))
! 		    (and (arrayp pass) (clear-string pass))
! 		    (setq pass new-pass))))))
  	(message nil)
  	(or pass default "")))))
  
--- 1818,1845 ----
  		      (setq c (read-char-exclusive nil t))
  		      (and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
  	  (clear-this-command-keys)
! 	  (cond ((= c ?\C-u)
! 		 (and (arrayp pass) (clear-string pass))
! 		 (setq pass ""))
! 		((memq (key-binding (vector c))
! 		       '(yank yank-pop))
! 		 (let ((new-pass (concat pass
! 					 (substring-no-properties
! 					  (current-kill 0)))))
! 		   (and (arrayp pass) (clear-string pass))
! 		   (setq c ?\0)
! 		   (setq pass new-pass)))
! 		((and (/= c ?\b) (/= c ?\177))
! 		 (let* ((new-char (char-to-string c))
! 			(new-pass (concat pass new-char)))
! 		   (and (arrayp pass) (clear-string pass))
! 		   (clear-string new-char)
! 		   (setq c ?\0)
! 		   (setq pass new-pass)))
! 		((> (length pass) 0)
! 		 (let ((new-pass (substring pass 0 -1)))
! 		   (and (arrayp pass) (clear-string pass))
! 		   (setq pass new-pass)))))
  	(message nil)
  	(or pass default "")))))
  

Diff finished.  Sun Nov 16 00:51:53 2008






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

* bug#1104: pasting a password
       [not found] <87skpsw6oe.fsf@cyd.mit.edu>
@ 2008-11-16  8:38 ` Andreas Schwab
       [not found] ` <jek5b4dq1b.fsf@sykes.suse.de>
  1 sibling, 0 replies; 5+ messages in thread
From: Andreas Schwab @ 2008-11-16  8:38 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 1104, jidanni, emacs-devel

Chong Yidong <cyd@stupidchicken.com> writes:

> --- 1818,1845 ----
>   		      (setq c (read-char-exclusive nil t))
>   		      (and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
>   	  (clear-this-command-keys)
> ! 	  (cond ((= c ?\C-u)
> ! 		 (and (arrayp pass) (clear-string pass))
> ! 		 (setq pass ""))
> ! 		((memq (key-binding (vector c))
> ! 		       '(yank yank-pop))

That does not work for yank-pop since the default binding is not a
single character one.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."






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

* bug#1104: pasting a password
       [not found] ` <jek5b4dq1b.fsf@sykes.suse.de>
@ 2008-11-16 16:08   ` Chong Yidong
  2008-11-16 19:21   ` Stefan Monnier
  1 sibling, 0 replies; 5+ messages in thread
From: Chong Yidong @ 2008-11-16 16:08 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: 1104, jidanni, emacs-devel

Andreas Schwab <schwab@suse.de> writes:

> That does not work for yank-pop since the default binding is not a
> single character one.

Yeah.  Maybe we should just hardwire C-y to yank into the password
prompt, and leave it at that.






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

* bug#1104: pasting a password
       [not found] ` <jek5b4dq1b.fsf@sykes.suse.de>
  2008-11-16 16:08   ` Chong Yidong
@ 2008-11-16 19:21   ` Stefan Monnier
  1 sibling, 0 replies; 5+ messages in thread
From: Stefan Monnier @ 2008-11-16 19:21 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: 1104, Chong Yidong, emacs-devel, jidanni

> That does not work for yank-pop since the default binding is not a
> single character one.

It's bound to a single-event sequence, namely M-y.  Now, it's true that
in several circumstances, M-y will be turned into ESC y, so it will only
work in some cases and not all (typically it'll work in a GUI but not
in a tty).
I think to do it better, we'll need to use an implementation technique
closer to the one used by isearch.


        Stefan






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

* bug#1104: pasting a password
       [not found] <jwv4p27scpb.fsf-monnier+emacsbugreports@gnu.org>
@ 2008-11-16 20:55 ` jidanni
  0 siblings, 0 replies; 5+ messages in thread
From: jidanni @ 2008-11-16 20:55 UTC (permalink / raw)
  To: monnier; +Cc: 1104, schwab, cyd, emacs-devel

Regarding those mile long one-time passwords that we are supposed to
paste into our browsers, etc.:

Some people also wish to paste the password into the box with the
mouse too (middle button). Therefore please roll back all that extra
security, and just do the plain echo asterisks, like firefox or
whatever.

Speaking about M-y. I am a old dog who still types ESC instead of
Meta-key for the M- stuff -- never learned new tricks.






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

end of thread, other threads:[~2008-11-16 20:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <87skpsw6oe.fsf@cyd.mit.edu>
2008-11-16  8:38 ` bug#1104: pasting a password Andreas Schwab
     [not found] ` <jek5b4dq1b.fsf@sykes.suse.de>
2008-11-16 16:08   ` Chong Yidong
2008-11-16 19:21   ` Stefan Monnier
     [not found] <jwv4p27scpb.fsf-monnier+emacsbugreports@gnu.org>
2008-11-16 20:55 ` jidanni
2008-11-16  6:01 Chong Yidong

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).