Project

General

Profile

バグ #659

File.openでバイナリファイルをオープンする時、バイナリモードになっていない

Added by Satoshi Okuno over 6 years ago. Updated over 6 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
プラグイン名:
ブランチ:
クラッシュする:

Description

Windowsに於いて、アカウント認証後にmikutterを再度起動すると、下記の例外でmikutterが起動しなくなります。

C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:122:in `final': wrong
final block length (OpenSSL::Cipher::CipherError)
from C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:122:in `decrypt'
from C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:26:in `block (2 levels) in accounts'
from C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:25:in `open'
from C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:25:in `block in accounts'
from C:/Ruby200/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
from C:/Users/desktop/Documents/mikutter/core/service_keeper.rb:23:in `accounts'
from C:/Users/desktop/Documents/mikutter/core/service.rb:22:in `services_refresh'
from C:/Users/desktop/Documents/mikutter/core/service.rb:324:in `<class:Service>'
from C:/Users/desktop/Documents/mikutter/core/service.rb:11:in `<top (required)>'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:98:in `require'

from C:/Users/desktop/Documents/mikutter/core/miquire.rb:98:in `miquire_original_require'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:95:in `file_or_directory_require'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:76:in `block in miquire'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:75:in `each'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:75:in `miquire'
from C:/Users/desktop/Documents/mikutter/core/miquire.rb:18:in `miquire'
from mikutter.rb:36:in `&lt;main&gt;'

今話題のOpenSSL関係かと思いましたが、ファイルのオープンモードの問題でした。

servie_keeper.rbの25行目と109行目のFile.openのモードがデフォルト(テキストモード)になっており、Windows環境では読み書き時に改行コードが変換(LF<->CRLF)されてキーが復元不能に成ってる模様です。

へんてこ環境特有の問題で恐縮ですが、バイナリモード指定("rb"、"wb")として頂けないでしょうか。

また、utils.rbの下記メソッドも同様の問題を抱えているため、併せて検討頂ければ。
object_get_contents()
file_put_contents()(※)
file_get_contents()(※)

※ 現状テキスト(YAMLとか)とバイナリ(画像ファイルとか)の両方で使用していますが、mikutterが扱うテキストファイルは全てLFなので、バイナリモード決め打ちで良いかなと思っています。


Files

0001-Windows.patch (2.55 KB) 0001-Windows.patch Satoshi Okuno, 2014-05-04 23:34

Also available in: Atom PDF