Revision: 7957 https://osdn.net/projects/ttssh2/scm/svn/commits/7957 Author: yutakapon Date: 2019-08-15 17:38:48 +0900 (Thu, 15 Aug 2019) Log Message: ----------- WindowsMeで RAND_bytes が落ちる問題への処置を追加した。 チケット #36876 Ticket Links: ------------ https://osdn.net/projects/ttssh2/tracker/detail/36876 Modified Paths: -------------- branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c Added Paths: ----------- branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt -------------- next part -------------- Added: branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt =================================================================== --- branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt (rev 0) +++ branches/openssl_1_1_1_v2/libs/openssl_patch/RAND_bytes.txt 2019-08-15 08:38:48 UTC (rev 7957) @@ -0,0 +1,20 @@ +*** openssl/crypto/rand/rand_lib.c 2019-05-28 22:12:20.000000000 +0900 +--- openssl.debugprint/crypto/rand/rand_lib.c 2019-08-15 16:54:19.583122400 +0900 +*************** int RAND_bytes(unsigned char *buf, int n +*** 832,838 **** + { + const RAND_METHOD *meth = RAND_get_rand_method(); + +! if (meth->bytes != NULL) + return meth->bytes(buf, num); + RANDerr(RAND_F_RAND_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED); + return -1; +--- 832,839 ---- + { + const RAND_METHOD *meth = RAND_get_rand_method(); + +! // added if meth is NULL pointer. +! if (meth && meth->bytes != NULL) + return meth->bytes(buf, num); + RANDerr(RAND_F_RAND_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED); + return -1; Modified: branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat =================================================================== --- branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat 2019-08-14 13:01:59 UTC (rev 7956) +++ branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat 2019-08-15 08:38:48 UTC (rev 7957) @@ -28,7 +28,6 @@ %folder%\patch %cmdopt1% < %folder%\ws2_32_dll_patch.txt %folder%\patch %cmdopt2% < %folder%\ws2_32_dll_patch.txt popd -goto patch4 rem CryptAcquireContextW API\x88ˑ\xB6\x8F\x9C\x8B\x8E\x82̂\xBD\x82\xDF @@ -43,9 +42,23 @@ rem popd +rem WindowsMe\x82\xC5RAND_bytes\x82ŗ\x8E\x82\xBF\x82錻\x8Fۉ\xF1\x94\xF0\x82̂\xBD\x82߁B :patch5 +findstr /c:"added if meth is NULL pointer" ..\openssl\crypto\rand\rand_lib.c +if ERRORLEVEL 1 goto fail5 +goto patch6 +:fail5 +pushd .. +%folder%\patch %cmdopt1% < %folder%\RAND_bytes.txt +%folder%\patch %cmdopt2% < %folder%\RAND_bytes.txt +popd + +:patch6 + + + :patch_end echo "\x83p\x83b\x83`\x82͓K\x97p\x82\xB3\x82\xEA\x82Ă\xA2\x82܂\xB7" timeout 5 Modified: branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c =================================================================== --- branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c 2019-08-14 13:01:59 UTC (rev 7956) +++ branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c 2019-08-15 08:38:48 UTC (rev 7957) @@ -463,7 +463,14 @@ void CRYPT_set_random_data(PTInstVar pvar, unsigned char *buf, int bytes) { - RAND_bytes(buf, bytes); + int ret; + + // OpenSSL 1.1.1\x82\xF0\x8Eg\x82\xC1\x82\xBD\x8Fꍇ\x81AWindowsMe\x82ł\xCD RAND_bytes() \x82̌Ăяo\x82\xB5\x82ŗ\x8E\x82\xBF\x82\xE9\x81B + logprintf(LOG_LEVEL_VERBOSE, "%s: RAND_bytes call", __FUNCTION__); + ret = RAND_bytes(buf, bytes); + if (ret < 0) { + logprintf(LOG_LEVEL_ERROR, "%s: RAND_bytes error(%d)", __FUNCTION__, ret); + } } void CRYPT_initialize_random_numbers(PTInstVar pvar)