diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-08-24 17:42:16 +0200 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2018-08-28 14:44:56 +0200 |
commit | 9a7892ef3fd9d4bd70df41fb0200782dc6134c70 (patch) | |
tree | 8411d211e794aecbdb44331295c3d9230251abe6 /trust | |
parent | 0d7fbd5189ba1414d84326ddc8e4cff98f66a44b (diff) |
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.
Diffstat (limited to 'trust')
-rw-r--r-- | trust/Makefile.am | 2 | ||||
-rw-r--r-- | trust/module-init.c | 43 | ||||
-rw-r--r-- | trust/module.c | 54 |
3 files changed, 44 insertions, 55 deletions
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 <stefw@redhat.com> + */ + +#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 */ |