[Mew-dist 05056] Re: imget APOP error
Akihisa Konno
minnie at example.com
1998年 6月 12日 (金) 15:39:04 JST
IM/GetPass.pmへのパッチを流した金野(minnie)@東大船舶(現 環境)です。
セキュリティのことはちっとも考えていませんでした^^;;。それと、前のパッ
チはピントがぼけていたので、修正版です。
Win95の環境では今までと同じで、パスワード類が表示されますが、
・Term::ReadKey が使えたら使う。
・(-t STDIN and -t STDERR)の場合に限り、ANSIエスケープシーケン
スを使ってなんとかする。(?)
のような方法でごまかせるかもしれません。(試してません。)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
._ _ * ._ ._ * _ 金野 祥久 東大・工・船舶海洋工・流体研
[ | ) | [ ) [ ) | (/, minnie at example.com
-=-=-=- はじめはピンとこないくらいの方が、いいんじゃないですか? -=-=-=-
-------------- next part --------------
--- IM.in/GetPass.pm.in.orig Wed Jan 14 14:43:18 1998
+++ IM.in/GetPass.pm.in Fri Jun 12 15:16:43 1998
@@ -45,18 +45,22 @@
my ($prompt) = @_;
my ($secret, $termios, $c_lflag);
- unless (win95p()) {
- # POSIX doesn't exist for Win95, sigh.
- # stty is not effective for Mule since it's not
- # terminal base, sigh.
- # Anyway, Mew never echos back even if getpass echos back.
- require POSIX && import POSIX;
+ # may well be wrapped by "if (-t STDIN) { ... }" ???
- $termios = new POSIX::Termios;
- $termios->getattr(fileno(STDIN));
- $c_lflag = $termios->getlflag;
- $termios->setlflag($c_lflag & ~&POSIX::ECHO);
- $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ # POSIX doesn't exist for Win95, sigh.
+ # stty is not effective for Mule since it's not
+ # terminal base, sigh.
+ # Anyway, Mew never echos back even if getpass echos back.
+ if (eval 'require POSIX') {
+ import POSIX;
+ $termios = new POSIX::Termios;
+ $termios->getattr(fileno(STDIN));
+ $c_lflag = $termios->getlflag;
+ $termios->setlflag($c_lflag & ~&POSIX::ECHO);
+ $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ } elsif (unixp()) { # non-POSIX-ish UNIX.
+ # stty might be available.
+ system('/bin/stty -echo'); # Ignore errors.
}
print STDERR $prompt;
@@ -64,9 +68,11 @@
chomp($secret = <STDIN>);
print STDERR "\n";
- unless (win95p()) {
- $termios->setlflag($c_lflag);
- $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ if (defined $termios) { # POSIX-ish
+ $termios->setlflag($c_lflag);
+ $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ } elsif (unixp()) { # non-POSIX-ish UNIX.
+ system('/bin/stty echo'); # Ignore errors.
}
return $secret;
Mew-dist メーリングリストの案内