Skip to content

Commit 1db158e

Browse files
authored
Merge pull request libgit2#6901 from libgit2/ethomson/openssl_dynamic
Fixes for OpenSSL dynamic
2 parents 5ead0bd + e7db282 commit 1db158e

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

src/libgit2/streams/openssl_dynamic.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ int (*SSL_write)(SSL *ssl, const void *buf, int num);
6565
long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
6666
void (*SSL_CTX_free)(SSL_CTX *ctx);
6767
SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
68+
X509_STORE *(*SSL_CTX_get_cert_store)(const SSL_CTX *);
6869
int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
6970
int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
7071
long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);
@@ -195,6 +196,7 @@ int git_openssl_stream_dynamic_init(void)
195196
SSL_CTX_ctrl = (long (*)(SSL_CTX *, int, long, void *))openssl_sym(&err, "SSL_CTX_ctrl", true);
196197
SSL_CTX_free = (void (*)(SSL_CTX *))openssl_sym(&err, "SSL_CTX_free", true);
197198
SSL_CTX_new = (SSL_CTX *(*)(const SSL_METHOD *))openssl_sym(&err, "SSL_CTX_new", true);
199+
SSL_CTX_get_cert_store = (X509_STORE *(*)(const SSL_CTX *))openssl_sym(&err, "SSL_CTX_get_cert_store", true);
198200
SSL_CTX_set_cipher_list = (int (*)(SSL_CTX *, const char *))openssl_sym(&err, "SSL_CTX_set_cipher_list", true);
199201
SSL_CTX_set_default_verify_paths = (int (*)(SSL_CTX *ctx))openssl_sym(&err, "SSL_CTX_set_default_verify_paths", true);
200202
SSL_CTX_set_options = (long (*)(SSL_CTX *, long))openssl_sym(&err, "SSL_CTX_set_options", false);

src/libgit2/streams/openssl_dynamic.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ typedef void SSL_METHOD;
204204
typedef void X509;
205205
typedef void X509_NAME;
206206
typedef void X509_NAME_ENTRY;
207+
typedef void X509_STORE;
207208
typedef void X509_STORE_CTX;
208209

209210
typedef struct {
@@ -309,6 +310,7 @@ extern int (*SSL_write)(SSL *ssl, const void *buf, int num);
309310
extern long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
310311
extern void (*SSL_CTX_free)(SSL_CTX *ctx);
311312
extern SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
313+
extern X509_STORE *(*SSL_CTX_get_cert_store)(const SSL_CTX *ctx);
312314
extern int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
313315
extern int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
314316
extern long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);

src/util/hashmap.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ typedef uint32_t git_hashmap_iter_t;
340340
int error = name##__put_idx(&idx, &key_exists, h, key); \
341341
if (error) \
342342
return error; \
343+
GIT_ASSERT((h)->flags); \
344+
GIT_ASSERT((h)->keys); \
345+
GIT_ASSERT((h)->keys); \
343346
if (!key_exists) \
344347
(h)->keys[idx] = key; \
345348
(h)->vals[idx] = val; \
@@ -382,8 +385,11 @@ typedef uint32_t git_hashmap_iter_t;
382385
int error = name##__put_idx(&idx, &key_exists, h, key); \
383386
if (error) \
384387
return error; \
385-
if (!key_exists) \
388+
GIT_ASSERT((h)->flags); \
389+
GIT_ASSERT((h)->keys); \
390+
if (!key_exists) { \
386391
(h)->keys[idx] = key; \
392+
} \
387393
return 0; \
388394
} \
389395
GIT_UNUSED_FUNCTION scope int name##_iterate(git_hashmap_iter_t *iter, key_t *key, name *h) \

tests/libgit2/online/customcert.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include "str.h"
1111
#include "streams/openssl.h"
1212

13-
#ifdef GIT_OPENSSL
13+
#if (GIT_OPENSSL && !GIT_OPENSSL_DYNAMIC)
1414
# include <openssl/ssl.h>
1515
# include <openssl/err.h>
1616
# include <openssl/x509v3.h>
@@ -91,7 +91,7 @@ void test_online_customcert__path(void)
9191

9292
void test_online_customcert__raw_x509(void)
9393
{
94-
#ifdef GIT_OPENSSL
94+
#if (GIT_OPENSSL && !GIT_OPENSSL_DYNAMIC)
9595
X509* x509_cert = NULL;
9696
char cwd[GIT_PATH_MAX];
9797
git_str raw_file = GIT_STR_INIT,

0 commit comments

Comments
 (0)