diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2020-10-11 11:41:38 +0100 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2020-10-11 11:41:38 +0100 |
commit | d79bb1595ce3678b925da02542bc97f789697d97 (patch) | |
tree | 3226bb69405fc59ce97b002e647cc20f09d42a50 /deps | |
parent | 2e5f27c7dc81618c185e68a1c6129dd99c69edab (diff) | |
download | libgit2-d79bb1595ce3678b925da02542bc97f789697d97.tar.gz |
ntlm: update ntlm dependency for htonllethomson/ntlm_htonll
Update ntlm to include an htonll that is not dependent on system
libraries.
Diffstat (limited to 'deps')
-rw-r--r-- | deps/ntlmclient/compat.h | 34 | ||||
-rw-r--r-- | deps/ntlmclient/crypt_openssl.c | 2 | ||||
-rw-r--r-- | deps/ntlmclient/ntlm.c | 10 | ||||
-rw-r--r-- | deps/ntlmclient/util.c | 16 | ||||
-rw-r--r-- | deps/ntlmclient/util.h | 3 |
5 files changed, 23 insertions, 42 deletions
diff --git a/deps/ntlmclient/compat.h b/deps/ntlmclient/compat.h index 6e5ef6466..befc7cc4f 100644 --- a/deps/ntlmclient/compat.h +++ b/deps/ntlmclient/compat.h @@ -21,40 +21,6 @@ # include <stdbool.h> #endif -#if defined(_WIN32) || defined(__APPLE__) -/* winsock and macOS > 10.9 have htonll already */ -#elif defined(__linux__) -/* See man page endian(3) */ -# include <endian.h> -# define htonll htobe64 -#elif defined(__NetBSD__) || defined(__OpenBSD__) -/* See man page htobe64(3) */ -# include <endian.h> -# define htonll htobe64 -#elif defined(__FreeBSD__) -/* See man page bwaps64(9) */ -# include <sys/endian.h> -# define htonll htobe64 -#elif defined(sun) || defined(__sun) -/* See man page byteorder(3SOCKET) */ -# include <sys/types.h> -# include <netinet/in.h> -# include <inttypes.h> - -# if !defined(htonll) -# if defined(_BIG_ENDIAN) -# define htonll(x) (x) -# else -# define htonll(x) ((((uint64_t)htonl(x)) << 32) + htonl((uint64_t)(x) >> 32)) -# endif -# endif -#elif defined(__HAIKU__) -# include <ByteOrder.h> -# define htonll B_HOST_TO_BENDIAN_INT64 -#else -# error "Please implement htonll for your platform" -#endif - #ifndef MIN # define MIN(x, y) (((x) < (y)) ? (x) : (y)) #endif diff --git a/deps/ntlmclient/crypt_openssl.c b/deps/ntlmclient/crypt_openssl.c index 785be10e5..c0d36d891 100644 --- a/deps/ntlmclient/crypt_openssl.c +++ b/deps/ntlmclient/crypt_openssl.c @@ -71,7 +71,7 @@ static inline void HMAC_CTX_free(HMAC_CTX *ctx) static inline int HMAC_CTX_reset(HMAC_CTX *ctx) { HMAC_CTX_cleanup(ctx); - memzero(ctx, sizeof(HMAC_CTX)); + ntlm_memzero(ctx, sizeof(HMAC_CTX)); return 1; } diff --git a/deps/ntlmclient/ntlm.c b/deps/ntlmclient/ntlm.c index 74224bbea..470a90143 100644 --- a/deps/ntlmclient/ntlm.c +++ b/deps/ntlmclient/ntlm.c @@ -132,10 +132,10 @@ int ntlm_client_set_hostname( static void free_credentials(ntlm_client *ntlm) { if (ntlm->password) - memzero(ntlm->password, strlen(ntlm->password)); + ntlm_memzero(ntlm->password, strlen(ntlm->password)); if (ntlm->password_utf16) - memzero(ntlm->password_utf16, ntlm->password_utf16_len); + ntlm_memzero(ntlm->password_utf16, ntlm->password_utf16_len); free(ntlm->username); free(ntlm->username_upper); @@ -1125,7 +1125,7 @@ static bool generate_lm2_response(ntlm_client *ntlm, size_t lm2_len = 16; uint64_t local_nonce; - local_nonce = htonll(ntlm->nonce); + local_nonce = ntlm_htonll(ntlm->nonce); if (!ntlm_hmac_ctx_reset(ntlm->hmac_ctx) || !ntlm_hmac_md5_init(ntlm->hmac_ctx, @@ -1197,8 +1197,8 @@ static bool generate_ntlm2_response(ntlm_client *ntlm) /* the blob's integer values are in network byte order */ signature = htonl(0x01010000); - timestamp = htonll(ntlm->timestamp); - nonce = htonll(ntlm->nonce); + timestamp = ntlm_htonll(ntlm->timestamp); + nonce = ntlm_htonll(ntlm->nonce); /* construct the blob */ memcpy(&blob[0], &signature, 4); diff --git a/deps/ntlmclient/util.c b/deps/ntlmclient/util.c index d0e3e53be..07d10f6c6 100644 --- a/deps/ntlmclient/util.c +++ b/deps/ntlmclient/util.c @@ -8,14 +8,28 @@ #include <stdlib.h> #include <stdint.h> +#include <arpa/inet.h> #include "compat.h" #include "util.h" -void memzero(void *data, size_t size) +void ntlm_memzero(void *data, size_t size) { volatile uint8_t *scan = (volatile uint8_t *)data; while (size--) *scan++ = 0x0; } + +uint64_t ntlm_htonll(uint64_t value) +{ + static union { + uint32_t i; + char c[8]; + } test = { 0x01020304 }; + + if (test.c[0] == 0x01) + return value; + else + return ((uint64_t)htonl(value) << 32) | htonl((uint64_t)value >> 32); +} diff --git a/deps/ntlmclient/util.h b/deps/ntlmclient/util.h index 1c1806ba3..d4bb472cc 100644 --- a/deps/ntlmclient/util.h +++ b/deps/ntlmclient/util.h @@ -9,6 +9,7 @@ #ifndef PRIVATE_UTIL_H__ #define PRIVATE_UTIL_H__ -extern void memzero(void *data, size_t size); +extern void ntlm_memzero(void *data, size_t size); +extern uint64_t ntlm_htonll(uint64_t value); #endif /* PRIVATE_UTIL_H__ */ |