pgg-pgp* bug

Takanori Saneto sanewo @ ba2.so-net.ne.jp
2000年 10月 19日 (木) 22:15:53 JST


remi_14 branch を使っていますが、pgp を使ってみようとしたところ、
decrypt はできるのに、signature の verify ができない(lookup-key が nil
を返す)という現象に遭遇しました。

呼ばれる pgp コマンドに wrapper をかけて引数や環境変数を調べてみると、
どうやら PGPPASSFD が定義されているのが悪いようです。ソースを見てみる
と、(setenv "PGPPASSFD" "0") などとしていますが、これは decript や
sign の時だけです。が、よく考えると、setenv は process-environment の
中身を書き換えてしまうため、これがそのあとに呼ばれる lookup-key など
に影響してしまっているようです。

というわけで、以下のようなパッチをあてたら、ちゃんと動くようになりまし
た。ちなみに、mime-mc.el でも setenv を使っていますが、ここではすでに
同様の処置がされているようです。

2000-10-19  Takanori Saneto  <sanewo @ ba2.so-net.ne.jp>

	* pgg-pgp.el (pgg-pgp-process-region): bind process-environment
	locally so that setenv's effect won't last forever.
	pgg-pgp5.el (pgg-pgp5-process-region): Ditto.

Index: pgg-pgp.el
===================================================================
RCS file: /cvs/root/semi/Attic/pgg-pgp.el,v
retrieving revision 1.1.4.4
diff -u -r1.1.4.4 pgg-pgp.el
--- pgg-pgp.el	2000/02/23 14:17:52	1.1.4.4
+++ pgg-pgp.el	2000/10/19 12:44:51
@@ -76,6 +76,7 @@
 		  (list (concat "2>" errors-file-name))))
 	 (shell-file-name pgg-pgp-shell-file-name)
 	 (shell-command-switch pgg-pgp-shell-command-switch)
+	 (process-environment process-environment)
 	 (output-buffer pgg-output-buffer)
 	 (errors-buffer pgg-errors-buffer)
 	 (process-connection-type nil)
Index: pgg-pgp5.el
===================================================================
RCS file: /cvs/root/semi/Attic/pgg-pgp5.el,v
retrieving revision 1.1.4.4
diff -u -r1.1.4.4 pgg-pgp5.el
--- pgg-pgp5.el	2000/02/23 14:17:52	1.1.4.4
+++ pgg-pgp5.el	2000/10/19 12:44:51
@@ -91,6 +91,7 @@
 		  (list (concat "2>" errors-file-name))))
 	 (shell-file-name pgg-pgp5-shell-file-name)
 	 (shell-command-switch pgg-pgp5-shell-command-switch)
+	 (process-environment process-environment)
 	 (output-buffer pgg-output-buffer)
 	 (errors-buffer pgg-errors-buffer)
 	 (process-connection-type nil)

-- 
さねを <URL:mailto:sanewo @ ba2.so-net.ne.jp>




More information about the Emacs-mime-ja mailing list