Commit 8cf88778 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Allow FIPS malloc callback setting. Automatically set some callbacks

in OPENSSL_init().
parent c4acfb1f
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@

#include <e_os.h>
#include <openssl/err.h>
#ifdef OPENSSL_FIPS
#include <openssl/fips.h>
#endif

#if defined(__GNUC__) && __GNUC__>=2
  void OPENSSL_init(void) __attribute__((constructor));
@@ -116,6 +119,11 @@ void OPENSSL_init(void)
	if (done)
		return;
	done = 1;
#ifdef OPENSSL_FIPS
	FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock);
	FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata);
	FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free);
#endif
#if 1
	fprintf(stderr, "Called OPENSSL_init\n");
#endif
+4 −0
Original line number Diff line number Diff line
@@ -122,6 +122,10 @@ void FIPS_set_locking_callbacks(void (*func)(int mode, int type,
				int (*add_cb)(int *pointer, int amount,
					int type, const char *file, int line));

void FIPS_set_malloc_callbacks(
		void *(*malloc_cb)(int num, const char *file, int line),
		void (*free_cb)(void *));

#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \
		alg " previous FIPS forbidden algorithm error ignored");

+8 −0
Original line number Diff line number Diff line
@@ -84,3 +84,11 @@ void FIPS_free(void *x)
	{
	fips_free_cb(x);
	}

void FIPS_set_malloc_callbacks(
		void *(*malloc_cb)(int num, const char *file, int line),
		void (*free_cb)(void *))
	{
	fips_malloc_cb = malloc_cb;
	fips_free_cb = free_cb;
	}