• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン7957 (tree)
日時2019-08-15 17:38:48
作者yutakapon

ログメッセージ

WindowsMeで RAND_bytes が落ちる問題への処置を追加した。
チケット #36876

変更サマリ

差分

--- branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt (nonexistent)
+++ branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt (revision 7957)
@@ -0,0 +1,20 @@
1+*** openssl/crypto/rand/rand_lib.c 2019-05-28 22:12:20.000000000 +0900
2+--- openssl.debugprint/crypto/rand/rand_lib.c 2019-08-15 16:54:19.583122400 +0900
3+*************** int RAND_bytes(unsigned char *buf, int n
4+*** 832,838 ****
5+ {
6+ const RAND_METHOD *meth = RAND_get_rand_method();
7+
8+! if (meth->bytes != NULL)
9+ return meth->bytes(buf, num);
10+ RANDerr(RAND_F_RAND_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED);
11+ return -1;
12+--- 832,839 ----
13+ {
14+ const RAND_METHOD *meth = RAND_get_rand_method();
15+
16+! // added if meth is NULL pointer.
17+! if (meth && meth->bytes != NULL)
18+ return meth->bytes(buf, num);
19+ RANDerr(RAND_F_RAND_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED);
20+ return -1;
--- branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat (revision 7956)
+++ branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat (revision 7957)
@@ -28,7 +28,6 @@
2828 %folder%\patch %cmdopt1% < %folder%\ws2_32_dll_patch.txt
2929 %folder%\patch %cmdopt2% < %folder%\ws2_32_dll_patch.txt
3030 popd
31-goto patch4
3231
3332
3433 rem CryptAcquireContextW API依存除去のため
@@ -43,9 +42,23 @@
4342 rem popd
4443
4544
45+rem WindowsMeでRAND_bytesで落ちる現象回避のため。
4646 :patch5
47+findstr /c:"added if meth is NULL pointer" ..\openssl\crypto\rand\rand_lib.c
48+if ERRORLEVEL 1 goto fail5
49+goto patch6
50+:fail5
51+pushd ..
52+%folder%\patch %cmdopt1% < %folder%\RAND_bytes.txt
53+%folder%\patch %cmdopt2% < %folder%\RAND_bytes.txt
54+popd
4755
4856
57+
58+:patch6
59+
60+
61+
4962 :patch_end
5063 echo "パッチは適用されています"
5164 timeout 5
--- branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c (revision 7956)
+++ branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c (revision 7957)
@@ -463,7 +463,14 @@
463463
464464 void CRYPT_set_random_data(PTInstVar pvar, unsigned char *buf, int bytes)
465465 {
466- RAND_bytes(buf, bytes);
466+ int ret;
467+
468+ // OpenSSL 1.1.1を使った場合、WindowsMeでは RAND_bytes() の呼び出しで落ちる。
469+ logprintf(LOG_LEVEL_VERBOSE, "%s: RAND_bytes call", __FUNCTION__);
470+ ret = RAND_bytes(buf, bytes);
471+ if (ret < 0) {
472+ logprintf(LOG_LEVEL_ERROR, "%s: RAND_bytes error(%d)", __FUNCTION__, ret);
473+ }
467474 }
468475
469476 void CRYPT_initialize_random_numbers(PTInstVar pvar)
旧リポジトリブラウザで表示