The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз дистрибутива openSUSE Leap 15.1"
Отправлено Ilya Indigo, 22-Май-19 20:57 
> Чем так плох TLS 1.3?

Он хороший, но тут его нет, к сожалению.
Больше года не хотели обновлять, потому что он ломал сранную ноду!
И больше года понадобилось чтобы выкатить гениально-сложный пач
https://build.opensuse.org/request/show/701128


+commit 8dd8033519658bba2d7b776ec166f889a56bce31
+Author: Shigeki Ohtsu <ohtsu@ohtsu.org>
+Date:   Wed Sep 12 17:34:24 2018 +0900
+
+    tls: workaround handshakedone in renegotiation
+    
+    `SSL_CB_HANDSHAKE_START` and `SSL_CB_HANDSHAKE_DONE` are called
+    sending HelloRequest in OpenSSL-1.1.1.
+    We need to check whether this is in a renegotiation state or not.
+    
+    Backport-PR-URL: https://github.com/nodejs/node/pull/26270
+    PR-URL: https://github.com/nodejs/node/pull/25381
+    Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
+    Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
+
+diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc
+index b5eff38358..0ec66fc467 100644
+--- a/src/tls_wrap.cc
++++ b/src/tls_wrap.cc
+@@ -221,7 +221,10 @@ void TLSWrap::SSLInfoCallback(const SSL* ssl_, int where, int ret) {
+     }
+   }
+
+-  if (where & SSL_CB_HANDSHAKE_DONE) {
++  // SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE are called
++  // sending HelloRequest in OpenSSL-1.1.1.
++  // We need to check whether this is in a renegotiation state or not.
++  if (where & SSL_CB_HANDSHAKE_DONE && !SSL_renegotiate_pending(ssl)) {
+     c->established_ = true;
+     Local<Value> callback = object->Get(env->onhandshakedone_string());
+     if (callback->IsFunction()) {

А после этого пача и принятия в Tumbleweed, оказалось, что только в русской и украинской локалях, начиная с 1.1.0i все приложения использующие openssl крашились.
https://bugzilla.opensuse.org/show_bug.cgi?id=1135550
Не китайская, ни новая японская, а только русская и украинская.

К счастью, на аналогичный по сложности пач понадобился всего 1 день


+Index: openssl-1.1.1b/crypto/err/err.c
+===================================================================
+--- openssl-1.1.1b.orig/crypto/err/err.c    2019-02-26 15:15:30.000000000 +0100
++++ openssl-1.1.1b/crypto/err/err.c    2019-05-21 21:14:31.211536069 +0200
+@@ -185,7 +185,7 @@ static ERR_STRING_DATA *int_err_get_item
+
+ #ifndef OPENSSL_NO_ERR
+ /* A measurement on Linux 2018-11-21 showed about 3.5kib */
+-# define SPACE_SYS_STR_REASONS 4 * 1024
++# define SPACE_SYS_STR_REASONS 8 * 1024
+ # define NUM_SYS_STR_REASONS 127
+
+ static ERR_STRING_DATA SYS_str_reasons[NUM_SYS_STR_REASONS + 1];
+@@ -225,8 +225,8 @@ static void build_SYS_str_reasons(void)
+
+                 str->string = cur;
+                 cnt += l;
+-                if (cnt > sizeof(strerror_pool))
+-                    cnt = sizeof(strerror_pool);
++                if (cnt >= sizeof(strerror_pool))
++                    cnt = sizeof(strerror_pool) - 1;
+                 cur += l;
+
+                 /*


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру