Add tsafe (thread safe) file to catch unsafe function calls.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2669 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
Angus Salkeld 2010-03-03 01:27:37 +00:00
parent 824fd8e82a
commit 4e7ded5bf3
5 changed files with 1117 additions and 3 deletions

View File

@ -80,7 +80,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdint.h \
stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h \
sys/time.h syslog.h unistd.h sys/types.h getopt.h malloc.h \
sys/sockio.h])
sys/sockio.h utmpx.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST

View File

@ -37,7 +37,7 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include $(nss_CFLAGS) $(rd
TOTEM_SRC = coropoll.c totemip.c totemnet.c totemudp.c \
totemrrp.c totemsrp.c totemmrp.c totempg.c \
crypto.c wthread.c
crypto.c wthread.c tsafe.c
if BUILD_RDMA
TOTEM_SRC += totemiba.c
endif

View File

@ -85,6 +85,7 @@
#include "service.h"
#include "schedwrk.h"
#include "evil.h"
#include "tsafe.h"
LOGSYS_DECLARE_SYSTEM ("corosync",
LOGSYS_MODE_OUTPUT_STDERR | LOGSYS_MODE_THREADED | LOGSYS_MODE_FORK,
@ -1239,7 +1240,7 @@ static void main_service_ready (void)
}
int main (int argc, char **argv)
int main (int argc, char **argv, char **envp)
{
const char *error_string;
struct totem_config totem_config;
@ -1477,6 +1478,9 @@ int main (int argc, char **argv)
}
logsys_fork_completed();
/* callthis after our fork() */
tsafe_init (envp);
corosync_timer_init (
serialize_lock,
serialize_unlock,

1067
exec/tsafe.c Normal file

File diff suppressed because it is too large Load Diff

43
exec/tsafe.h Normal file
View File

@ -0,0 +1,43 @@
/*
* Copyright (c) 2010 Red Hat, Inc.
*
* All rights reserved.
*
* Author: Angus Salkeld <asalkeld@redhat.com>
*
* This software licensed under BSD license, the text of which follows:
*
* 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.
* - Neither the name of the MontaVista Software, Inc. nor the names of its
* contributors may 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.
*/
#ifndef _TSAFE_H_
#define _TSAFE_H_
extern void tsafe_init (char **envp);
extern void tsafe_off (void);
extern void tsafe_on (void);
#endif /* _TSAFE_H_ */