From 9a7892ef3fd9d4bd70df41fb0200782dc6134c70 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Fri, 24 Aug 2018 17:42:16 +0200 Subject: trust: Factor out module initialization into separate file This prevents double call to p11_library_init() in test-module.c, once from the ELF constructor, and secondly from the test itself. --- trust/Makefile.am | 2 +- trust/module-init.c | 43 ++++++++++++++++++++++++++++++++++++++++++ trust/module.c | 54 ----------------------------------------------------- 3 files changed, 44 insertions(+), 55 deletions(-) create mode 100644 trust/module-init.c (limited to 'trust') diff --git a/trust/Makefile.am b/trust/Makefile.am index cb9de25..c4a65a3 100644 --- a/trust/Makefile.am +++ b/trust/Makefile.am @@ -64,7 +64,7 @@ p11_kit_trust_la_LDFLAGS = \ -export-symbols-regex 'C_GetFunctionList' \ $(NULL) -p11_kit_trust_la_SOURCES = $(TRUST_SRCS) +p11_kit_trust_la_SOURCES = $(TRUST_SRCS) trust/module-init.c libtrust_testable_la_LDFLAGS = \ -no-undefined diff --git a/trust/module-init.c b/trust/module-init.c new file mode 100644 index 0000000..10c303c --- /dev/null +++ b/trust/module-init.c @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2012 Red Hat Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * The names of contributors to this software may not be + * used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * Author: Stef Walter + */ + +#include "config.h" + +#include "module.h" +#include "library.h" + +#define INIT p11_trust_module_init +#define FINI p11_trust_module_fini +#define CLEANUP +#include "init.h" diff --git a/trust/module.c b/trust/module.c index fc67a4d..e09113b 100644 --- a/trust/module.c +++ b/trust/module.c @@ -1832,57 +1832,3 @@ p11_module_next_id (void) static CK_ULONG unique = 0x10; return (unique)++; } - -#ifdef OS_UNIX - -void p11_trust_module_init (void); - -void p11_trust_module_fini (void); - -#ifdef __GNUC__ -__attribute__((constructor)) -#endif -void -p11_trust_module_init (void) -{ - p11_library_init (); -} - -#ifdef __GNUC__ -__attribute__((destructor)) -#endif -void -p11_trust_module_fini (void) -{ - p11_library_uninit (); -} - -#endif /* OS_UNIX */ - -#ifdef OS_WIN32 - -BOOL WINAPI DllMain (HINSTANCE, DWORD, LPVOID); - -BOOL WINAPI -DllMain (HINSTANCE instance, - DWORD reason, - LPVOID reserved) -{ - switch (reason) { - case DLL_PROCESS_ATTACH: - p11_library_init (); - break; - case DLL_THREAD_DETACH: - p11_library_thread_cleanup (); - break; - case DLL_PROCESS_DETACH: - p11_library_uninit (); - break; - default: - break; - } - - return TRUE; -} - -#endif /* OS_WIN32 */ -- cgit v1.1