Fix build with LibreSSL

Index: src/SWIG/_lib.i
--- src/SWIG/_lib.i.orig
+++ src/SWIG/_lib.i
@@ -21,7 +21,7 @@
 
 %{
 /* OpenSSL 1.0.2 copmatbility shim */
-#if OPENSSL_VERSION_NUMBER < 0x10002000L
+#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER)
 typedef void (*OPENSSL_sk_freefunc)(void *);
 typedef void *(*OPENSSL_sk_copyfunc)(const void *);
 typedef struct stack_st OPENSSL_STACK;
@@ -31,47 +31,21 @@ typedef struct stack_st OPENSSL_STACK;
 
 void OPENSSL_sk_free(OPENSSL_STACK *st)
 {
-    if (st == NULL)
-        return;
-    OPENSSL_free(st->data);
-    OPENSSL_free(st);
+    sk_free(st);
 }
 
 OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *sk,
                              OPENSSL_sk_copyfunc copy_func,
                              OPENSSL_sk_freefunc free_func)
 {
-    OPENSSL_STACK *ret;
-    int i;
+    /* Do not support this. It relies on UB via function pointer casting. */
+    return NULL;
+}
 
-    if (sk->num < 0)
-        return NULL;
-
-    if ((ret = OPENSSL_malloc(sizeof(*ret))) == NULL)
-        return NULL;
-
-    /* direct structure assignment */
-    *ret = *sk;
-
-    ret->num_alloc = sk->num > MIN_NODES ? (size_t)sk->num : MIN_NODES;
-    ret->data = OPENSSL_zalloc(sizeof(*ret->data) * ret->num_alloc);
-    if (ret->data == NULL) {
-        OPENSSL_free(ret);
-        return NULL;
-    }
-
-    for (i = 0; i < ret->num; ++i) {
-        if (sk->data[i] == NULL)
-            continue;
-        if ((ret->data[i] = copy_func(sk->data[i])) == NULL) {
-            while (--i >= 0)
-                if (ret->data[i] != NULL)
-                    free_func((void *)ret->data[i]);
-            OPENSSL_sk_free(ret);
-            return NULL;
-        }
-    }
-    return ret;
+int sk_find_ex(OPENSSL_STACK *sk, void *wanted)
+{
+    /* Let's see if anything fails. */
+    return -1;
 }
 #endif /* OpenSSL 1.0.2 copmatbility shim */
 
