+---
+* [Bug 3404] Fix openSSL DLL usage under Windows <perlinger@ntp.org>
+ - fix/drop assumptions on OpenSSL libs directory layout
+
---
(4.2.8p10-win-beta1) 2017/03/21 Released by Harlan Stenn <stenn@ntp.org>
(4.2.8p10)
# include "msvc_ssl_autolib.h"
# endif
# endif
-# if OPENSSL_VERSION_NUMBER < 0x10100000L
-# include <openssl/applink.c>
-# endif
+# include <openssl/applink.c>
# ifdef _MSC_VER
# pragma warning(pop)
# endif
#endif
#ifdef WRAP_DBG_MALLOC
-void *wrap_dbg_malloc(size_t s, const char *f, int l);
-void *wrap_dbg_realloc(void *p, size_t s, const char *f, int l);
-void wrap_dbg_free(void *p);
-void wrap_dbg_free_ex(void *p, const char *f, int l);
+static void *wrap_dbg_malloc(size_t s, const char *f, int l);
+static void *wrap_dbg_realloc(void *p, size_t s, const char *f, int l);
+static void wrap_dbg_free(void *p);
+static void wrap_dbg_free_ex(void *p, const char *f, int l);
#endif
ssl_applink(void)
{
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+
# ifdef WRAP_DBG_MALLOC
CRYPTO_set_mem_functions(wrap_dbg_malloc, wrap_dbg_realloc, wrap_dbg_free_ex);
# else
OPENSSL_malloc_init();
# endif
-#else
+
+# else
+
# ifdef WRAP_DBG_MALLOC
CRYPTO_set_mem_ex_functions(wrap_dbg_malloc, wrap_dbg_realloc, wrap_dbg_free);
# else
CRYPTO_malloc_init();
# endif
+
#endif /* OpenSSL version cascade */
}
#else /* !OPENSSL || !SYS_WINNT */
* for DEBUG malloc/realloc/free (lacking block type).
* Simple wrappers convert.
*/
-void *wrap_dbg_malloc(size_t s, const char *f, int l)
+static void *wrap_dbg_malloc(size_t s, const char *f, int l)
{
void *ret;
return ret;
}
-void *wrap_dbg_realloc(void *p, size_t s, const char *f, int l)
+static void *wrap_dbg_realloc(void *p, size_t s, const char *f, int l)
{
void *ret;
return ret;
}
-void wrap_dbg_free(void *p)
+static void wrap_dbg_free(void *p)
{
_free_dbg(p, _NORMAL_BLOCK);
}
-void wrap_dbg_free_ex(void *p, const char *f, int l)
+static void wrap_dbg_free_ex(void *p, const char *f, int l)
{
(void)f;
(void)l;
* So instead of manipulating the build environment we use the build
* tools themselves to create requests for linking the right library.
*
- * To use this feature, it is recommended to use the precompiled
- * VC binaries from Shining Light Productions:
+ * Unless you compile OpenSSL on your own, using the precompiled
+ * VC binaries from Shining Light Productions is probably easiest:
* https://slproweb.com/products/Win32OpenSSL.html
- * These are installed in (OPENSSL_LIB)/vc.
*
- * As an alternative, create the set of build variants of OpenSSL you
- * need, implementing the following naming scheme:
+ * If 'OPENSSL_AUTOLINK_STRICT' is defined, then target bit width,
+ * runtime model and debug/release info are incoded into the library
+ * file name, according to this scheme:
*
* basename<width><RT><DebRel>.lib
*
#pragma once
#if !defined(_MSC_VER)
+
# error use this header only with Micro$oft Visual C compilers!
+
#elif defined(OPENSSL_NO_AUTOLINK)
+
# pragma message("automatic OpenSSL library selection disabled")
-#else
-/* ---------------------------------------------------------------- */
+
+#elif defined(OPENSSL_AUTOLINK_STRICT)
+
+ /* ---------------------------------------------------------------- */
/* selection dance to get the right libraries linked */
/* ---------------------------------------------------------------- */
* request in the object file, depending on the SSL version and the
* build variant.
*/
+
+# if OPENSSL_VERSION_NUMBER >= 0x10100000L
+# pragma comment(lib, "libcrypto" LTAG_SIZE LTAG_RTLIB LTAG_DEBUG ".lib")
+# else
+# pragma comment(lib, "libeay32" LTAG_RTLIB LTAG_DEBUG ".lib")
+# endif
+
+# else
+
# if OPENSSL_VERSION_NUMBER >= 0x10100000L
-# pragma comment(lib, "libcrypto" LTAG_SIZE LTAG_RTLIB LTAG_DEBUG ".lib")
+# pragma comment(lib, "libcrypto.lib")
# else
-# pragma comment(lib, "libeay32" LTAG_RTLIB LTAG_DEBUG ".lib")
+# pragma comment(lib, "libeay32.lib")
# endif
#endif /*!defined(OPENSSL_NO_AUTOLINK)*/
/>
<Tool
Name="VCLinkerTool"
- AdditionalLibraryDirectories=" $(OPENSSL64_LIB)\vc"
+ AdditionalLibraryDirectories=" $(OPENSSL64_LIB)"
TargetMachine="17"
/>
</VisualStudioPropertySheet>
/>
<Tool
Name="VCLinkerTool"
- AdditionalLibraryDirectories=" $(OPENSSL_LIB)\vc"
+ AdditionalLibraryDirectories=" $(OPENSSL_LIB)"
TargetMachine="1"
/>
</VisualStudioPropertySheet>
/>
<Tool
Name="VCLinkerTool"
- AdditionalLibraryDirectories=" $(OPENSSL64_LIB)\vc"
+ AdditionalLibraryDirectories=" $(OPENSSL64_LIB)"
TargetMachine="17"
/>
</VisualStudioPropertySheet>
/>
<Tool
Name="VCLinkerTool"
- AdditionalLibraryDirectories=" $(OPENSSL_LIB)\vc"
+ AdditionalLibraryDirectories=" $(OPENSSL_LIB)"
TargetMachine="1"
/>
</VisualStudioPropertySheet>
</ClCompile>
<Link>
<TargetMachine>MachineX64</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL64_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL64_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX64</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL64_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL64_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX64</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL64_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL64_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX64</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL64_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL64_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
- <AdditionalLibraryDirectories>$(OPENSSL_LIB)\vc</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OPENSSL_LIB)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />