git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] configure.ac,imap-send.c: check HMAC_CTX_cleanup

From
Reuben Hawkins <reubenhwk@gmail.com>
Date
Dec 21, 2014, 18:53 UTC
Message-ID
<1419188016-26134-3-git-send-email-reubenhwk@gmail.com>
In-Reply-To
<1419188016-26134-1-git-send-email-reubenhwk@gmail.com>

Older versions of OpenSSL have HMAC_cleanup, but not HMAC_CTX_cleanup. This change checks for both, uses HMAC_CTX_cleanup on platforms which have it, otherwise falls back to HMAC_cleanup.

This changes makes building GIT on older platforms less tedious.
---
 Makefile     |  6 ++++++
 configure.ac | 13 +++++++++++++
 imap-send.c  |  6 ++++++
 3 files changed, 25 insertions(+)
diff --git a/Makefile b/Makefile
index 7482a4d..a495d94 100644
--- a/Makefile
+++ b/Makefile
@@ -1059,6 +1059,12 @@ ifndef NO_OPENSSL
 	ifdef NEEDS_CRYPTO_WITH_SSL
 		OPENSSL_LIBSSL += -lcrypto
 	endif
+	ifdef HAVE_HMAC_CTX_CLEANUP
+		BASIC_CFLAGS += -DHAVE_HMAC_CTX_CLEANUP
+	endif
+	ifdef HAVE_HMAC_CLEANUP
+		BASIC_CFLAGS += -DHAVE_HMAC_CLEANUP
+	endif
 else
 	BASIC_CFLAGS += -DNO_OPENSSL
 	BLK_SHA1 = 1
diff --git a/configure.ac b/configure.ac
index 3900044..b22788c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -899,6 +899,7 @@ GIT_CONF_SUBST([SNPRINTF_RETURNS_BOGUS])
 ## Checks for library functions.
 ## (in default C library and libraries checked by AC_CHECK_LIB)
 AC_MSG_NOTICE([CHECKS for library functions])
+
 #
 # Define NO_LIBGEN_H if you don't have libgen.h.
 AC_CHECK_HEADER([libgen.h],
@@ -932,6 +933,18 @@ AC_CHECK_LIB([iconv], [locale_charset],
                      [CHARSET_LIB=-lcharset])])
 GIT_CONF_SUBST([CHARSET_LIB])
 #
+# Define HAVE_HMAC_CTX_CLEANUP=Yes if we have the newer HMAC cleanup function
+AC_CHECK_LIB([crypto], [HMAC_CTX_cleanup],
+	[HAVE_HMAC_CTX_CLEANUP=Yes],
+	[], [])
+GIT_CONF_SUBST([HAVE_HMAC_CTX_CLEANUP])
+#
+# Define HAVE_HMAC_CLEANUP=Yes if we have the older HMAC cleanup function
+AC_CHECK_LIB([crypto], [HMAC_cleanup],
+	[HAVE_HMAC_CLEANUP=Yes],
+	[], [])
+GIT_CONF_SUBST([HAVE_HMAC_CLEANUP])
+#
 # Define NO_CLOCK_GETTIME if you don't have clock_gettime.
 GIT_CHECK_FUNC(clock_gettime,
 [HAVE_CLOCK_GETTIME=Yes],
diff --git a/imap-send.c b/imap-send.c
index 70bcc7a..eec2378 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -861,7 +861,13 @@ static char *cram(const char *challenge_64, const char *user, const char *pass)
 	HMAC_Init(&hmac, (unsigned char *)pass, strlen(pass), EVP_md5());
 	HMAC_Update(&hmac, (unsigned char *)challenge, decoded_len);
 	HMAC_Final(&hmac, hash, NULL);
+#if defined(HAVE_HMAC_CTX_CLEANUP)
 	HMAC_CTX_cleanup(&hmac);
+#elif defined(HAVE_HMAC_CLEANUP)
+	HMAC_cleanup(&hmac);
+#else
+# error "no HMAC_cleanup function"
+#endif
 
 	hex[32] = 0;
 	for (i = 0; i < 16; i++) {
-- 
2.2.0.GIT
Previous: Reuben HawkinsNext: Eric Sunshine
Message 6 of 22 in “configure.ac: check tv_nsec field in struct stat”
  1. 1/3 configure.ac: check tv_nsec field in struct statReuben Hawkins, Dec 21, 2014
  2. 2/3 configure.ac,trace.c: check for CLOCK_MONOTONICReuben Hawkins, Dec 21, 2014
  3. Eric SunshineDec 21, 2014
  4. brian m. carlsonDec 22, 2014
  5. Reuben HawkinsDec 22, 2014
  6. 3/3 configure.ac,imap-send.c: check HMAC_CTX_cleanupReuben Hawkins, Dec 21, 2014
  7. Eric SunshineDec 21, 2014
  8. v2 patches for fixes on RHEL3Reuben Hawkins, Jan 7, 2015
  9. 1/3 configure.ac: check tv_nsec field in struct statReuben Hawkins, Jan 7, 2015
  10. Eric SunshineJan 7, 2015
  11. Reuben HawkinsJan 7, 2015
  12. Eric SunshineJan 7, 2015
  13. Reuben HawkinsJan 7, 2015
  14. Eric SunshineJan 8, 2015
  15. 2/3 configure.ac: check for clock_gettime and CLOCK_MONOTONICReuben Hawkins, Jan 7, 2015
  16. Eric SunshineJan 7, 2015
  17. Reuben HawkinsJan 7, 2015
  18. Eric SunshineJan 8, 2015
  19. 3/3 configure.ac: check for HMAC_CTX_cleanupReuben Hawkins, Jan 7, 2015
  20. Eric SunshineJan 7, 2015
  21. Eric SunshineDec 21, 2014
  22. Eric SunshineDec 21, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.