[mew-dist 29486] Re: Mew 6.5rc1 <- stunnel-4.53 abort

TAKANO Yuji ( たかのゆ〜じ ) takachan at example.com
2012年 3月 28日 (水) 17:30:57 JST


たかのです。こんちには。

From: Kazu Yamamoto (山本和彦) <kazu at example.com>さん
> 山本です。
> > +            s_log(LOG_DEBUG, "Service [%s] (FD=%d) bound to %s",
> これだと、今の正規表現でマッチしそうなんですが、何がいけないのでしょ
> うね?

  Mew version 6.5rc1 で、stunnel のバージョンを以下の二つ試しま
した。

上手くいく:		stunnel-4.52
C-g押すひつようがある:	stunnel-4.53

  mew 側で debug をオンにして確認してみましたが mew-ssl-filter1
は無事に通過しているようです。mew-ssl-filter2 のほうで引っかかっ
ている感じがします。

--- 上手く行くパターン (stunnel-4.52)
2012.03.28 17:07:20 LOG6[54368:675303168]: SSL connected: new session negotiated
2012.03.28 17:07:20 LOG6[54368:675303168]: Negotiated ciphers: RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
2012.03.28 17:07:20 LOG6[54368:675303168]: Compression: null, expansion: null
---

--- C-g が必要なパターン
2012.03.28 16:48:34 LOG6[49776:675302400]: SSL connected: new session negotiated
2012.03.28 16:48:34 LOG6[49776:675302400]: Negotiated TLSv1/SSLv3 ciphersuite: RC4-SHA (128-bit encryption)
2012.03.28 16:48:34 LOG6[49776:675302400]: Compression: null, expansion: null
---

stunnel のソースコードの比較です。

---
--- stunnel-4.52/src/client.c   2012-01-12 00:43:33.000000000 +0900
+++ stunnel-4.53/src/client.c   2012-03-05 20:11:06.000000000 +0900
@@ -851,23 +891,9 @@
     if(global_options.debug_level<LOG_INFO) /* performance optimization */
         return;
     cipher=(SSL_CIPHER *)SSL_get_current_cipher(c->ssl);
-    buf=SSL_CIPHER_description(cipher, NULL, 0);
-    i=j=buf;
-    do {
-        switch(*i) {
-        case ' ':
-            *j++=' ';
-            while(i[1]==' ')
-                ++i;
-            break;
-        case '\n':
-            break;
-        default:
-            *j++=*i;
-        }
-    } while(*i++);
-    s_log(LOG_INFO, "Negotiated ciphers: %s", buf);
-    OPENSSL_free(buf);
+    s_log(LOG_INFO, "Negotiated %s ciphersuite: %s (%d-bit encryption)",
+        SSL_CIPHER_get_version(cipher), SSL_CIPHER_get_name(cipher),
+        SSL_CIPHER_get_bits(cipher, NULL));

 #if !defined(OPENSSL_NO_COMP) && OPENSSL_VERSION_NUMBER>=0x0090800fL
     compression=SSL_get_current_compression(c->ssl);
---


mew-ssl.el は安直すぎますが、以下で動作しました。

--- mew-ssl.el.orig     2012-03-28 17:23:05.000000000 +0900
+++ mew-ssl.el  2012-03-28 17:23:09.000000000 +0900
@@ -231,7 +231,7 @@
       (mew-ssl-set-string pnm string)
       (setq string (concat prev-str string))
       (cond
-       ((string-match "Negotiated ciphers\\|opened with SSL" string)
+       ((string-match "Negotiated \\|opened with SSL" string)
        (mew-ssl-set-status pnm t))
        ((string-match "Failed to initialize" string)
        (mew-ssl-set-status pnm t)) ;; xxx
---


  他の方が無事に動作しているとなると、もしかして、僕の環境だけで
しょうかね・・。実は僕の以前の環境(FreeBSD 8.3-STABLE)でも当初は
無事に動作していたのですが、最近動作しなくなりました。

  最近 OS をアップデート(FreeBSD 9.0-STABLE) したのですが、 OS
とか FreeBSD の ports が何か絡んでいるのかなぁ? Negotiated の
プロトコルが全然違いますよね・・。

たかの
---
Contact to me.
takachan[at]running-dog.net     http://www.running-dog.net/
takachan[at]icmpv6.org          http://icmpv6.org/


Mew-dist メーリングリストの案内