summaryrefslogtreecommitdiff
path: root/freefilesync/debian/patches/ffs_libssl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/debian/patches/ffs_libssl.patch')
-rw-r--r--freefilesync/debian/patches/ffs_libssl.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/freefilesync/debian/patches/ffs_libssl.patch b/freefilesync/debian/patches/ffs_libssl.patch
new file mode 100644
index 0000000..1e043c1
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_libssl.patch
@@ -0,0 +1,53 @@
+Author: bgstack15
+Message: Revert freefilesync 10.22 zen/open_ssl.cpp which depends on openssl 1.1.1e which is not available in this distro yet.
+Date: 2020-03-18
+diff --git a/zen/open_ssl.cpp b/zen/open_ssl.cpp
+index 0f1da3fc..b823f8ca 100644
+--- a/zen/open_ssl.cpp
++++ b/zen/open_ssl.cpp
+@@ -18,7 +18,7 @@ using namespace zen;
+ #error FFS, we are royally screwed!
+ #endif
+
+-static_assert(OPENSSL_VERSION_NUMBER >= 0x1010105fL, "OpenSSL version too old");
++static_assert(OPENSSL_VERSION_NUMBER >= 0x10100000L, "OpenSSL version too old");
+
+
+ void zen::openSslInit()
+@@ -68,7 +68,7 @@ std::wstring formatOpenSSLError(const std::wstring& functionName, unsigned long
+
+ std::wstring formatLastOpenSSLError(const std::wstring& functionName)
+ {
+- const auto ec = ::ERR_peek_last_error();
++ const unsigned long ec = ::ERR_peek_last_error();
+ ::ERR_clear_error(); //clean up for next OpenSSL operation on this thread
+ return formatOpenSSLError(functionName, ec);
+ }
+@@ -566,16 +566,9 @@ public:
+ if (rv != 1)
+ {
+ const int sslError = ::SSL_get_error(ssl_, rv);
+- if (sslError == SSL_ERROR_ZERO_RETURN)
+- return 0; //EOF + close_notify alert
+-
+- warn_static("find a better solution for SSL_read_ex + EOF")
+- //"sslError == SSL_ERROR_SYSCALL && ::ERR_peek_last_error() == 0" => obsolete as of OpenSSL 1.1.1e
+- //https://github.com/openssl/openssl/issues/10880#issuecomment-575746226
+- const auto ec = ::ERR_peek_last_error();
+- if (sslError == SSL_ERROR_SSL && ERR_GET_REASON(ec) == SSL_R_UNEXPECTED_EOF_WHILE_READING) //EOF: only expected for HTTP/1.0
++ if (sslError == SSL_ERROR_ZERO_RETURN || //EOF + close_notify alert
++ (sslError == SSL_ERROR_SYSCALL && ::ERR_peek_last_error() == 0)) //EOF: only expected for HTTP/1.0
+ return 0;
+-
+ throw SysError(formatLastOpenSSLError(L"SSL_read_ex") + L' ' + formatSslErrorCode(sslError));
+ }
+ assert(bytesReceived > 0); //SSL_read_ex() considers EOF an error!
+@@ -771,7 +764,7 @@ std::string zen::convertPuttyKeyToPkix(const std::string& keyStream, const std::
+
+ auto numToBeString = [](size_t n) -> std::string
+ {
+- static_assert(usingLittleEndian()&& sizeof(n) >= 4);
++ static_assert(usingLittleEndian() && sizeof(n) >= 4);
+ const char* numStr = reinterpret_cast<const char*>(&n);
+ return { numStr[3], numStr[2], numStr[1], numStr[0] }; //big endian!
+ };
bgstack15