OpenSSLにバグを見つけたので修正したよ

もふったーが OpenSSL の処理内でたまに落っこちることがあったのですが、なかなか捕捉できませんでした。

ですが、ついにデバッガでとらえることに成功!


          push    esi
          mov    esi,[esp+14h]
          push    edi
          push    ebp
          mov    [esp+18h],esi
          xor    edi,edi
          call    jmp_LIBEAY32.dll!LIBEAY32.1654
          add    esp,00000004h
          test    eax,eax
          jle    L1001FA0B
          push    ebx
          mov    ebx,[esp+20h]
          nop
 L1001F980:
          push    edi
          push    ebp
          call    jmp_LIBEAY32.dll!LIBEAY32.1653
          add    esp,00000008h
          test    dword ptr [eax+0Ch],00000100h
          jnz    L1001F999
          test    byte ptr [eax+10h],80h
          jz     L1001F9A6

LIBEAY32.dll!LIBEAY32.1653 ってのは sk_value 関数
これの結果が0だった時の処理をしていないのが原因でした

調べてみたら少なくとも以下の関数に問題があることが分かったよ。

crypto\conf\cnf_save.c
\ssl\t1_lib.c
ssl\s3_srvr.c
ssl\s23_clnt.c
ssl\ssl_lib.c
ssl\s3_lib.c
ssl\ssl_ciph.c
ssl\ssltest.c
ssl\s3_clnt.c
ssl\kssl.c
ssl\d1_clnt.c

ちゃんとNULL時の処理をしてる箇所もあるので、単なる抜けじゃないかな?

 【BM】Windows 95 で動作するOpenSSLライブラリ作ったよ!
修正版のバイナリとソースコード(差分をアップしたよ)

おすすめ

1件の返信

  1. 名無し より:

    もう、本家にはフィードバックされたのでしょうか?
    次のバージョンで直ってるといいですね。
    P.S.
    全然関係ないですが、Adobe Flash Playerの新バージョ
    ン 11.3.300.268 が出たようですね。ここで指摘されて
    たバグ、直ってるかな?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です