[Midnightbsd-cvs] mports [17322] trunk/security: add trousers

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Mon Sep 15 21:36:54 EDT 2014


Revision: 17322
          http://svnweb.midnightbsd.org/mports/?rev=17322
Author:   laffer1
Date:     2014-09-15 21:36:53 -0400 (Mon, 15 Sep 2014)
Log Message:
-----------
add trousers

Modified Paths:
--------------
    trunk/security/Makefile

Added Paths:
-----------
    trunk/security/trousers/
    trunk/security/trousers/Makefile
    trunk/security/trousers/distinfo
    trunk/security/trousers/files/
    trunk/security/trousers/files/extra-patch-src-tcs-Makefile.am
    trunk/security/trousers/files/extra-patch-src-tcsd-Makefile.am
    trunk/security/trousers/files/extra-patch-src-tddl-Makefile.am
    trunk/security/trousers/files/patch-configure.in
    trunk/security/trousers/files/patch-dist-Makefile.am
    trunk/security/trousers/files/patch-dist-tcsd.conf.in
    trunk/security/trousers/files/patch-src-include-biosem.h
    trunk/security/trousers/files/patch-src-include-linux-tpm.h
    trunk/security/trousers/files/patch-src-include-tcs_tsp.h
    trunk/security/trousers/files/patch-src-include-tcs_utils.h
    trunk/security/trousers/files/patch-src-include-tcsd.h
    trunk/security/trousers/files/patch-src-include-tcsd_ops.h
    trunk/security/trousers/files/patch-src-include-threads.h
    trunk/security/trousers/files/patch-src-include-trousers_types.h
    trunk/security/trousers/files/patch-src-include-tss-platform.h
    trunk/security/trousers/files/patch-src-tcs-ps-ps_utils.c
    trunk/security/trousers/files/patch-src-tcs-ps-tcsps.c
    trunk/security/trousers/files/patch-src-tcs-tcs_aik.c
    trunk/security/trousers/files/patch-src-tcs-tcs_auth_mgr.c
    trunk/security/trousers/files/patch-src-tcsd-svrside.c
    trunk/security/trousers/files/patch-src-trspi-Makefile.am
    trunk/security/trousers/files/patch-src-tspi-Makefile.am
    trunk/security/trousers/files/patch-src-tspi-ps-ps_utils.c
    trunk/security/trousers/files/patch-src-tspi-ps-tspps.c
    trunk/security/trousers/files/patch-src-tspi-rpc-hosttable.c
    trunk/security/trousers/files/patch-src-tspi-rpc-tcstp-rpc.c
    trunk/security/trousers/files/pkg-message.in
    trunk/security/trousers/files/tcsd.in
    trunk/security/trousers/pkg-descr
    trunk/security/trousers/pkg-plist

Modified: trunk/security/Makefile
===================================================================
--- trunk/security/Makefile	2014-09-16 01:35:17 UTC (rev 17321)
+++ trunk/security/Makefile	2014-09-16 01:36:53 UTC (rev 17322)
@@ -108,6 +108,7 @@
 SUBDIR += sudo
 SUBDIR += tor
 SUBDIR += tripwire
+SUBDIR += trousers
 SUBDIR += vlock
 SUBDIR += vlog
 SUBDIR += vnccrack

Added: trunk/security/trousers/Makefile
===================================================================
--- trunk/security/trousers/Makefile	                        (rev 0)
+++ trunk/security/trousers/Makefile	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,60 @@
+# $MidnightBSD$
+
+PORTNAME=	trousers
+PORTVERSION=	0.3.10
+CATEGORIES=	security
+MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}/${PORTVERSION}
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	The open-source TCG Software Stack
+
+LICENSE=	CPL
+LICENSE_NAME=	Common Public License
+LICENSE_FILE=	${WRKSRC}/LICENSE
+LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+USES=		gmake iconv libtool pkgconfig
+USE_OPENSSL=	YES
+USE_LDCONFIG=	YES
+USE_AUTOTOOLS= 	libtoolize aclocal autoconf automake
+AUTOMAKE_ARGS=	-a -c -f
+USE_RC_SUBR=	tcsd
+INSTALL_TARGET=	install-strip
+GNU_CONFIGURE=	YES
+CONFIGURE_ARGS=	--with-gui=none --enable-static \
+		--localstatedir=${PREFIX}/var \
+		--with-tssuser=${USERS} --with-tssgroup=${GROUPS} RANLIB=:
+MAKE_ENV=	ICONV_LIB=${ICONV_LIB} \
+		ICONV_PREFIX=${ICONV_PREFIX}
+SUB_FILES=	pkg-message
+SUB_LIST=	USERS=${USERS} GROUPS=${GROUPS}
+USERS=		_tss
+GROUPS=		_tss
+
+OPTIONS_DEFINE=	EMULATOR DEBUG
+EMULATOR_DESC=	Build for use with the tpm-emulator
+DEBUG_CONFIGURE_ENABLE=	debug
+
+.include <bsd.mport.options.mk>
+
+.if ${PORT_OPTIONS:MEMULATOR}
+PKGNAMESUFFIX+=	-no_tddl
+LIB_DEPENDS+=	libtddl.so:${PORTSDIR}/emulators/tpm-emulator
+
+EXTRA_PATCHES=	${FILESDIR}/extra-patch-src-tcs-Makefile.am \
+		${FILESDIR}/extra-patch-src-tcsd-Makefile.am \
+		${FILESDIR}/extra-patch-src-tddl-Makefile.am
+# The emulator has already a libttddl.so, so comment out trousers' libtddl in the pkg-plist
+PLIST_SUB+=	TDDL="@comment "
+.else
+PKGNAMESUFFIX+=	-tddl
+CONFLICTS+=	tpm-emulator-[0-9]*
+PLIST_SUB+=	TDDL=""
+.endif
+
+post-install:
+	${INSTALL_DATA} \
+	    ${WRKSRC}/dist/tcsd.conf ${STAGEDIR}${PREFIX}/etc/tcsd.conf.dist
+	${MKDIR} ${STAGEDIR}${PREFIX}/var/lib/tpm
+
+.include <bsd.port.mk>

Added: trunk/security/trousers/distinfo
===================================================================
--- trunk/security/trousers/distinfo	                        (rev 0)
+++ trunk/security/trousers/distinfo	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,2 @@
+SHA256 (trousers-0.3.10.tar.gz) = eb9569de5c66d9698f6c3303de03777b95ec72827f68b7744454bfa9227bc530
+SIZE (trousers-0.3.10.tar.gz) = 1658652

Added: trunk/security/trousers/files/extra-patch-src-tcs-Makefile.am
===================================================================
--- trunk/security/trousers/files/extra-patch-src-tcs-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/extra-patch-src-tcs-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/tcs/Makefile.am.orig	2013-07-27 04:22:06.000000000 +0900
++++ src/tcs/Makefile.am	2013-07-27 04:22:21.000000000 +0900
+@@ -1,7 +1,7 @@
+ noinst_LIBRARIES=libtcs.a
+ 
+ CFLAGS+=-I${top_srcdir}/src/include
+-libtcs_a_LIBADD=${top_builddir}/src/tddl/libtddl.a
++libtcs_a_LIBADD=${LOCALBASE}/lib/libtddl.a
+ libtcs_a_CFLAGS=-DAPPID=\"TCSD\ TCS\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -fPIE -DPIE
+ 
+ libtcs_a_SOURCES=log.c \

Added: trunk/security/trousers/files/extra-patch-src-tcsd-Makefile.am
===================================================================
--- trunk/security/trousers/files/extra-patch-src-tcsd-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/extra-patch-src-tcsd-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/tcsd/Makefile.am.orig	2013-07-27 04:22:53.000000000 +0900
++++ src/tcsd/Makefile.am	2013-07-27 04:24:06.000000000 +0900
+@@ -1,7 +1,7 @@
+ sbin_PROGRAMS=tcsd
+ 
+ tcsd_CFLAGS=-DAPPID=\"TCSD\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -I${top_srcdir}/src/include -fPIE -DPIE
+-tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a ${top_builddir}/src/tddl/libtddl.a -lpthread @CRYPTOLIB@
++tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a -ltddl -L${LOCALBASE}/lib -lpthread @CRYPTOLIB@
+ tcsd_LDFLAGS=-pie -Wl,-z,relro -Wl,-z,now
+ 
+ tcsd_SOURCES=svrside.c tcsd_conf.c tcsd_threads.c platform.c

Added: trunk/security/trousers/files/extra-patch-src-tddl-Makefile.am
===================================================================
--- trunk/security/trousers/files/extra-patch-src-tddl-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/extra-patch-src-tddl-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,8 @@
+--- src/tddl/Makefile.am.orig	2013-07-27 04:24:29.000000000 +0900
++++ src/tddl/Makefile.am	2013-07-27 04:24:42.000000000 +0900
+@@ -1,4 +1,4 @@
+-lib_LIBRARIES=libtddl.a
++lib_LIBRARIES=
+ 
+ libtddl_a_SOURCES=tddl.c
+ libtddl_a_CFLAGS=-DAPPID=\"TCSD\ TDDL\" -I${top_srcdir}/src/include -fPIE -DPIE

Added: trunk/security/trousers/files/patch-configure.in
===================================================================
--- trunk/security/trousers/files/patch-configure.in	                        (rev 0)
+++ trunk/security/trousers/files/patch-configure.in	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,41 @@
+--- configure.in.orig	2010-07-09 05:35:18.000000000 +0900
++++ configure.in	2010-10-24 22:31:30.040556068 +0900
+@@ -75,6 +75,21 @@
+ 		[CFLAGS="$CFLAGS -ftest-coverage -fprofile-arcs"
+ 		 AC_MSG_RESULT([*** Enabling gcov at user request ***])],)
+ 
++# Check for tss user
++AC_ARG_WITH(tssuser,
++        [  --with-tssuser[[=USER]]    set tss user [[tss]]],
++        [tss_user=$withval],
++        [tss_user=tss]
++)
++# Check for tss group
++AC_ARG_WITH(tssgroup,
++        [  --with-tssgroup[[=GROUP]]  set tss group [[tss]]],
++        [tss_group=$withval],
++        [tss_group=tss]
++)
++AC_SUBST(TSS_USER_NAME, $tss_user)
++AC_SUBST(TSS_GROUP_NAME, $tss_group)
++
+ # profiling support
+ AC_ARG_ENABLE(gprof,
+ 		[AC_HELP_STRING([--enable-gprof], [enable profiling with gprof [default=off]])],
+@@ -352,6 +367,8 @@
+ AC_C_BIGENDIAN([AC_DEFINE(_BIG_ENDIAN, 1, [big-endian host])])
+ AC_CHECK_DECL(htole32, [AC_DEFINE(HTOLE_DEFINED, 1, [htole32 function is available])])
+ AC_CHECK_HEADER(sys/byteorder.h, [AC_DEFINE(HAVE_BYTEORDER_H, 1, [sys/byteorder.h header])])
++AC_CHECK_HEADER(endian.h, [AC_DEFINE(HAVE_ENDIAN_H, 1, [endian.h header])])
++AC_CHECK_HEADER(sys/endian.h, [AC_DEFINE(HAVE_SYS_ENDIAN_H, 1, [sys/endian.h header])])
+ AC_CHECK_FUNC(daemon, [ AC_DEFINE(HAVE_DAEMON, 1, [daemon function is available]) ])
+  
+ if test "x${GCC}" = "xyes"; then
+@@ -359,6 +376,7 @@
+ fi
+ 
+ CFLAGS="$CFLAGS -I../include \
++	-DTSS_USER_NAME=\\\"$tss_user\\\" -DTSS_GROUP_NAME=\\\"$tss_group\\\" \
+ 	-DTCSD_DEFAULT_PORT=${TCSD_DEFAULT_PORT} -DTSS_VER_MAJOR=${TSS_VER_MAJOR} \
+ 	-DTSS_VER_MINOR=${TSS_VER_MINOR} -DTSS_SPEC_MAJOR=${TSS_SPEC_MAJOR} \
+ 	-DTSS_SPEC_MINOR=${TSS_SPEC_MINOR}"

Added: trunk/security/trousers/files/patch-dist-Makefile.am
===================================================================
--- trunk/security/trousers/files/patch-dist-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/patch-dist-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,20 @@
+--- dist/Makefile.am.orig	2010-03-12 05:41:54.000000000 +0900
++++ dist/Makefile.am	2010-10-24 21:04:04.818560844 +0900
+@@ -1,17 +1,7 @@
+ EXTRA_DIST = system.data.auth system.data.noauth \
+        fedora/fedora.initrd.tcsd
+ install: install-exec-hook
+-	if test ! -e ${DESTDIR}/@sysconfdir@/tcsd.conf; then mkdir -p ${DESTDIR}/@sysconfdir@ && cp tcsd.conf ${DESTDIR}/@sysconfdir@; fi
+-	/bin/chown tss:tss ${DESTDIR}/@sysconfdir@/tcsd.conf || true
+-	/bin/chmod 0600 ${DESTDIR}/@sysconfdir@/tcsd.conf
+ 
+ install-exec-hook:
+-	/usr/sbin/groupadd tss || true
+-	/usr/sbin/useradd -r tss -g tss || true
+-	/bin/sh -c 'if [ ! -e ${DESTDIR}/@localstatedir@/lib/tpm ];then mkdir -p ${DESTDIR}/@localstatedir@/lib/tpm; fi'
+-	/bin/chown tss:tss ${DESTDIR}/@localstatedir@/lib/tpm || true
+-	/bin/chmod 0700 ${DESTDIR}/@localstatedir@/lib/tpm
+ 
+ uninstall-hook:
+-	/usr/sbin/userdel tss || true
+-	/usr/sbin/groupdel tss || true

Added: trunk/security/trousers/files/patch-dist-tcsd.conf.in
===================================================================
--- trunk/security/trousers/files/patch-dist-tcsd.conf.in	                        (rev 0)
+++ trunk/security/trousers/files/patch-dist-tcsd.conf.in	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,20 @@
+--- dist/tcsd.conf.in.orig	2010-01-29 01:27:50.000000000 +0900
++++ dist/tcsd.conf.in	2010-10-25 00:06:25.565556476 +0900
+@@ -35,7 +35,7 @@
+ #  log data. The interface to this log is usually provided by the TPM
+ #  device driver.
+ #
+-# firmware_log_file = /sys/kernel/security/tpm0/binary_bios_measurements
++# firmware_log_file = /var/run/tpm/binary_bios_measurements
+ #
+ 
+ # Option: kernel_log_file
+@@ -46,7 +46,7 @@
+ #  http://sf.net/projects/linux-ima for more info on getting IMA.
+ #
+ #
+-# kernel_log_file = /sys/kernel/security/ima/binary_runtime_measurements
++# kernel_log_file = /var/run/ima/binary_runtime_measurements
+ #
+ 
+ # Option: firmware_pcrs

Added: trunk/security/trousers/files/patch-src-include-biosem.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-biosem.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-biosem.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/include/biosem.h.orig	2010-03-12 05:22:36.000000000 +0900
++++ src/include/biosem.h	2010-10-24 21:04:04.820558727 +0900
+@@ -26,7 +26,7 @@
+ 	UINT32 eventType;
+ 	BYTE   digest[20];
+ 	UINT32 eventDataSize;
+-	BYTE   event[0];/* (eventSize) bytes of event data follows */
++	BYTE   event[1];/* (eventSize) bytes of event data follows */
+ } TCG_PCClientPCREventStruc;
+ 
+ #define EVLOG_SOURCE_BIOS	1

Added: trunk/security/trousers/files/patch-src-include-linux-tpm.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-linux-tpm.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-linux-tpm.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/include/linux/tpm.h.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/include/linux/tpm.h	2010-10-24 21:04:04.821560671 +0900
+@@ -20,6 +20,8 @@
+ #include <linux/ioctl.h>
+ #elif (defined (__OpenBSD__) || defined (__FreeBSD__))
+ #include <sys/ioctl.h>
++#elif (defined (SOLARIS))
++#include <sys/ioccom.h>
+ #endif
+ 
+ /* ioctl commands */

Added: trunk/security/trousers/files/patch-src-include-tcs_tsp.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-tcs_tsp.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-tcs_tsp.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,16 @@
+--- src/include/tcs_tsp.h.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/include/tcs_tsp.h	2010-10-24 21:04:04.822560729 +0900
+@@ -79,7 +79,13 @@
+ /* XXX Get rid of this, there's no reason to set an arbitrary limit */
+ #define MAX_KEY_CHILDREN	10
+ 
++#ifndef STRUCTURE_PACKING_ATTRIBUTE
++#ifdef __GCC
+ #define STRUCTURE_PACKING_ATTRIBUTE	__attribute__((packed))
++#else
++#define STRUCTURE_PACKING_ATTRIBUTE    /* */
++#endif
++#endif
+ 
+ #ifdef TSS_DEBUG
+ #define DBG_ASSERT(x)	assert(x)

Added: trunk/security/trousers/files/patch-src-include-tcs_utils.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-tcs_utils.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-tcs_utils.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,23 @@
+--- src/include/tcs_utils.h.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/include/tcs_utils.h	2010-10-24 21:04:04.824555399 +0900
+@@ -18,6 +18,20 @@
+ #include "tcs_tsp.h"
+ #include "trousers_types.h"
+ 
++
++
++/* 
++ * XXX malloc wrapper 
++ *
++ * Linux: malloc(0) => '\0'
++ * *BSD:  malloc(0) => invalid to dereference
++ *
++ * => so wrap malloc(0) => calloc(1, 16) to create
++ * a 16Byte array containing '\0'
++ *
++ */
++#define malloc(x) ((x) == 0 ? calloc(1, 16) : calloc(1, (x)))
++
+ struct key_mem_cache
+ {
+ 	TCPA_KEY_HANDLE tpm_handle;

Added: trunk/security/trousers/files/patch-src-include-tcsd.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-tcsd.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-tcsd.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,29 @@
+--- src/include/tcsd.h.orig	2010-05-03 11:54:15.000000000 +0900
++++ src/include/tcsd.h	2010-10-24 22:28:52.708555289 +0900
+@@ -50,14 +50,22 @@
+ 
+ #define TCSD_CONFIG_FILE	ETC_PREFIX "/tcsd.conf"
+ 
++#ifndef TSS_USER_NAME
+ #define TSS_USER_NAME		"tss"
++#endif
++#ifndef TSS_GROUP_NAME
+ #define TSS_GROUP_NAME		"tss"
++#endif
++
++#ifndef TPM_PREFIX
++#define TPM_PREFIX "/lib/tpm"
++#endif
+ 
+ #define TCSD_DEFAULT_MAX_THREADS	10
+-#define TCSD_DEFAULT_SYSTEM_PS_FILE	VAR_PREFIX "/lib/tpm/system.data"
+-#define TCSD_DEFAULT_SYSTEM_PS_DIR	VAR_PREFIX "/lib/tpm"
+-#define TCSD_DEFAULT_FIRMWARE_LOG_FILE	"/sys/kernel/security/tpm0/binary_bios_measurements"
+-#define TCSD_DEFAULT_KERNEL_LOG_FILE	"/sys/kernel/security/ima/binary_runtime_measurements"
++#define TCSD_DEFAULT_SYSTEM_PS_FILE	VAR_PREFIX TPM_PREFIX "/system.data"
++#define TCSD_DEFAULT_SYSTEM_PS_DIR	VAR_PREFIX TPM_PREFIX
++#define TCSD_DEFAULT_FIRMWARE_LOG_FILE	"/var/run/tpm/binary_bios_measurements"
++#define TCSD_DEFAULT_KERNEL_LOG_FILE	"/var/run/ima/binary_runtime_measurements"
+ #define TCSD_DEFAULT_FIRMWARE_PCRS	0x00000000
+ #define TCSD_DEFAULT_KERNEL_PCRS	0x00000000
+ 

Added: trunk/security/trousers/files/patch-src-include-tcsd_ops.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-tcsd_ops.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-tcsd_ops.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/include/tcsd_ops.h.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/include/tcsd_ops.h	2010-10-24 21:04:04.827558718 +0900
+@@ -123,7 +123,7 @@
+ 
+ struct tcsd_op {
+ 	char *name;
+-	int op[];
++	int op[20];
+ };
+ 
+ struct tcsd_op tcsd_op_seal = {"seal", {TCSD_OP_SEAL}};

Added: trunk/security/trousers/files/patch-src-include-threads.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-threads.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-threads.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/include/threads.h.orig	2010-05-03 11:54:15.000000000 +0900
++++ src/include/threads.h	2010-10-24 21:04:04.828558009 +0900
+@@ -31,7 +31,7 @@
+ #define COND_SIGNAL(c)		pthread_cond_signal(c)
+ 
+ /* thread abstractions */
+-#define THREAD_ID			((THREAD_TYPE)pthread_self())
++#define THREAD_ID			(long int)((THREAD_TYPE)pthread_self())
+ #define THREAD_TYPE			pthread_t
+ #define THREAD_JOIN			pthread_join
+ #define THREAD_DETACH			pthread_detach

Added: trunk/security/trousers/files/patch-src-include-trousers_types.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-trousers_types.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-trousers_types.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,42 @@
+--- src/include/trousers_types.h.orig	2010-05-20 02:45:55.000000000 +0900
++++ src/include/trousers_types.h	2010-10-24 21:04:04.829561420 +0900
+@@ -11,6 +11,14 @@
+ #ifndef _TROUSERS_TYPES_H_
+ #define _TROUSERS_TYPES_H_
+ 
++#ifndef STRUCTURE_PACKING_ATTRIBUTE
++#ifdef __GCC
++#define STRUCTURE_PACKING_ATTRIBUTE   __attribute__((packed))
++#else
++#define STRUCTURE_PACKING_ATTRIBUTE   /* */
++#endif
++#endif
++
+ #define TCPA_NONCE_SIZE		sizeof(TCPA_NONCE)
+ #define TCPA_DIGEST_SIZE	sizeof(TCPA_DIGEST)
+ #define TCPA_ENCAUTH_SIZE	sizeof(TCPA_ENCAUTH)
+@@ -100,7 +108,7 @@
+ typedef struct tdTSS_KEY12_HDR {
+ 	TPM_STRUCTURE_TAG tag;
+ 	UINT16 fill;
+-} __attribute__((packed)) TSS_KEY12_HDR;
++} STRUCTURE_PACKING_ATTRIBUTE TSS_KEY12_HDR;
+ 
+ typedef struct tdTSS_KEY {
+ 	union {
+@@ -118,11 +126,10 @@
+ 	BYTE *encData;
+ } TSS_KEY;
+ 
+-#if (defined (__linux) || defined (linux) || defined (SOLARIS) || defined (__GLIBC__))
+-#define BSD_CONST
+-#elif (defined (__OpenBSD__) || defined (__FreeBSD__))
++#if defined (__FreeBSD__)
+ #define BSD_CONST const
+-#endif
+-
++#else
++#define BSD_CONST /* */
++#endif 
+ 
+ #endif

Added: trunk/security/trousers/files/patch-src-include-tss-platform.h
===================================================================
--- trunk/security/trousers/files/patch-src-include-tss-platform.h	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-include-tss-platform.h	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/include/tss/platform.h.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/include/tss/platform.h	2010-10-24 21:04:04.830556101 +0900
+@@ -15,7 +15,7 @@
+ #if !defined(WIN32)
+ #include <stdint.h>
+    typedef uint8_t            BYTE;
+-   typedef int8_t             TSS_BOOL;
++   typedef uint8_t            TSS_BOOL;
+    typedef uint16_t           UINT16;
+    typedef uint32_t           UINT32;
+    typedef uint64_t           UINT64;

Added: trunk/security/trousers/files/patch-src-tcs-ps-ps_utils.c
===================================================================
--- trunk/security/trousers/files/patch-src-tcs-ps-ps_utils.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tcs-ps-ps_utils.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,45 @@
+--- src/tcs/ps/ps_utils.c.orig	2012-09-20 02:24:48.000000000 +0900
++++ src/tcs/ps/ps_utils.c	2013-07-31 22:18:59.000000000 +0900
+@@ -16,10 +16,18 @@
+ #if defined(HAVE_BYTEORDER_H)
+ #include <sys/byteorder.h>
+ #elif defined(HTOLE_DEFINED)
++#if defined(HAVE_ENDIAN_H)
+ #include <endian.h>
+ #define LE_16 htole16
+ #define LE_32 htole32
+ #define LE_64 htole64
++#endif
++#if defined(HAVE_SYS_ENDIAN_H)
++#include <sys/endian.h>
++#define LE_16 htole16
++#define LE_32 htole32
++#define LE_64 htole64
++#endif
+ #else
+ #define LE_16(x) (x)
+ #define LE_32(x) (x)
+@@ -42,11 +50,7 @@
+ struct key_disk_cache *key_disk_cache_head = NULL;
+ 
+ 
+-#ifdef SOLARIS
+ TSS_RESULT
+-#else
+-inline TSS_RESULT
+-#endif
+ read_data(int fd, void *data, UINT32 size)
+ {
+ 	int rc;
+@@ -64,11 +68,7 @@
+ }
+ 
+ 
+-#ifdef SOLARIS
+ TSS_RESULT
+-#else
+-inline TSS_RESULT
+-#endif
+ write_data(int fd, void *data, UINT32 size)
+ {
+ 	int rc;

Added: trunk/security/trousers/files/patch-src-tcs-ps-tcsps.c
===================================================================
--- trunk/security/trousers/files/patch-src-tcs-ps-tcsps.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tcs-ps-tcsps.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,67 @@
+--- src/tcs/ps/tcsps.c.orig	2010-05-02 11:39:11.000000000 +0900
++++ src/tcs/ps/tcsps.c	2010-10-24 21:04:04.833559489 +0900
+@@ -24,6 +24,11 @@
+ #define LE_16 htole16
+ #define LE_32 htole32
+ #define LE_64 htole64
++#elif defined (HAVE_SYS_ENDIAN_H)
++#include <sys/endian.h>
++#define LE_16 htole16
++#define LE_32 htole32
++#define LE_64 htole64
+ #else
+ #define LE_16(x) (x)
+ #define LE_32(x) (x)
+@@ -33,6 +38,26 @@
+ #include <fcntl.h>
+ #include <limits.h>
+ 
++#ifdef __sun
++#define LOCK_EX  F_LOCK 
++#define LOCK_UN  F_ULOCK 
++#define flock(fd, func) lockf(fd, func, 0)
++#endif
++
++#ifndef LOCK_SH
++#define   LOCK_SH   1    /* shared lock */
++#endif
++#ifndef LOCK_EX
++#define   LOCK_EX   2    /* exclusive lock */
++#endif
++#ifndef LOCK_NB
++#define   LOCK_NB   4    /* don't block when locking */
++#endif
++#ifndef LOCK_UN
++#define   LOCK_UN   8    /* unlock */
++#endif
++
++
+ #include "trousers/tss.h"
+ #include "trousers_types.h"
+ #include "tcsps.h"
+@@ -43,6 +68,25 @@
+ #include "tcsd_wrap.h"
+ #include "tcsd.h"
+ 
++#ifndef LE_16
++static UINT16 htole16(UINT16 x)
++{
++    BYTE *b = &x;
++    return (UINT16) (b[0] + (b[1] << 8));
++}
++#define LE_16 htole16
++#endif
++
++#ifndef LE_32
++static UINT32 htole32(UINT32 x)
++{
++    BYTE *b = &x;
++    return (UINT32) (b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24));
++}
++#define LE_32 htole32
++#endif
++
++
+ int system_ps_fd = -1;
+ MUTEX_DECLARE(disk_cache_lock);
+ 

Added: trunk/security/trousers/files/patch-src-tcs-tcs_aik.c
===================================================================
--- trunk/security/trousers/files/patch-src-tcs-tcs_aik.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tcs-tcs_aik.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/tcs/tcs_aik.c.orig	2010-06-10 05:20:44.000000000 +0900
++++ src/tcs/tcs_aik.c	2010-10-24 21:04:04.834556754 +0900
+@@ -66,7 +66,7 @@
+ 	UnloadBlob_UINT16(offset, &key->size, blob);
+ 
+ 	if (key->size > 0) {
+-		key->data = (BYTE *)malloc(key->size);
++		key->data = malloc(key->size);
+ 		if (key->data == NULL) {
+ 			LogError("malloc of %hu bytes failed.", key->size);
+ 			key->size = 0;

Added: trunk/security/trousers/files/patch-src-tcs-tcs_auth_mgr.c
===================================================================
--- trunk/security/trousers/files/patch-src-tcs-tcs_auth_mgr.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tcs-tcs_auth_mgr.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,29 @@
+--- src/tcs/tcs_auth_mgr.c.orig	2010-06-10 05:21:32.000000000 +0900
++++ src/tcs/tcs_auth_mgr.c	2010-10-24 21:04:04.836560084 +0900
+@@ -108,7 +108,7 @@
+ auth_mgr_swap_in()
+ {
+ 	if (auth_mgr.overflow[auth_mgr.of_tail] != NULL) {
+-		LogDebug("waking up thread %lddd, auth slot has opened", THREAD_ID);
++		LogDebug("waking up thread %ld, auth slot has opened", THREAD_ID);
+ 		/* wake up the next sleeping thread in order and increment tail */
+ 		COND_SIGNAL(auth_mgr.overflow[auth_mgr.of_tail]);
+ 		auth_mgr.overflow[auth_mgr.of_tail] = NULL;
+@@ -149,7 +149,7 @@
+ 		auth_mgr.overflow[auth_mgr.of_head] = cond;
+ 		auth_mgr.of_head = (auth_mgr.of_head + 1) % auth_mgr.overflow_size;
+ 		/* go to sleep */
+-		LogDebug("thread %lddd going to sleep until auth slot opens", THREAD_ID);
++		LogDebug("thread %ld going to sleep until auth slot opens", THREAD_ID);
+ 		auth_mgr.sleeping_threads++;
+ 		COND_WAIT(cond, &tcsp_lock);
+ 		auth_mgr.sleeping_threads--;
+@@ -180,7 +180,7 @@
+ 		auth_mgr.of_tail = 0;
+ 		auth_mgr.overflow[auth_mgr.of_head] = cond;
+ 		auth_mgr.of_head = (auth_mgr.of_head + 1) % auth_mgr.overflow_size;
+-		LogDebug("thread %lddd going to sleep until auth slot opens", THREAD_ID);
++		LogDebug("thread %ld going to sleep until auth slot opens", THREAD_ID);
+ 		auth_mgr.sleeping_threads++;
+ 		COND_WAIT(cond, &tcsp_lock);
+ 		auth_mgr.sleeping_threads--;

Added: trunk/security/trousers/files/patch-src-tcsd-svrside.c
===================================================================
--- trunk/security/trousers/files/patch-src-tcsd-svrside.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tcsd-svrside.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,124 @@
+--- src/tcsd/svrside.c.orig	2012-09-25 23:23:01.000000000 +0900
++++ src/tcsd/svrside.c	2013-07-31 22:12:08.000000000 +0900
+@@ -66,12 +66,19 @@
+ 	close(sd);
+ }
+ 
+-void
++static void
+ tcsd_signal_hup(int signal)
+ {
+ 	hup = 1;
+ }
+ 
++static void
++tcsd_signal_chld(int signal)
++{
++
++	wait3(NULL, WNOHANG, NULL);
++}
++
+ static TSS_RESULT
+ signals_init(void)
+ {
+@@ -80,6 +87,14 @@
+ 	struct sigaction sa;
+ 
+ 	sigemptyset(&sigmask);
++	if ((rc = sigaddset(&sigmask, SIGCHLD))) {
++		LogError("sigaddset: %s", strerror(errno));
++		return TCSERR(TSS_E_INTERNAL_ERROR);
++	}
++	if ((rc = sigaddset(&sigmask, SIGINT))) {
++		LogError("sigaddset: %s", strerror(errno));
++		return TCSERR(TSS_E_INTERNAL_ERROR);
++	}
+ 	if ((rc = sigaddset(&sigmask, SIGTERM))) {
+ 		LogError("sigaddset: %s", strerror(errno));
+ 		return TCSERR(TSS_E_INTERNAL_ERROR);
+@@ -102,12 +117,24 @@
+ 		return TCSERR(TSS_E_INTERNAL_ERROR);
+ 	}
+ 
++	if ((rc = sigaction(SIGINT, &sa, NULL))) {
++		LogError("signal SIGINT not registered: %s", strerror(errno));
++		return TCSERR(TSS_E_INTERNAL_ERROR);
++	}
++
+ 	sa.sa_handler = tcsd_signal_hup;	
+ 	if ((rc = sigaction(SIGHUP, &sa, NULL))) {
+ 		LogError("signal SIGHUP not registered: %s", strerror(errno));
+ 		return TCSERR(TSS_E_INTERNAL_ERROR);
+ 	}
+ 
++	sa.sa_flags = SA_RESTART;
++	sa.sa_handler = tcsd_signal_chld;
++	if ((rc = sigaction(SIGCHLD, &tcsd_sa_chld, NULL))) {
++		LogError("signal SIGCHLD not registered: %s", strerror(errno));
++		return TCSERR(TSS_E_INTERNAL_ERROR);
++	}
++
+ 	return TSS_SUCCESS;
+ }
+ 
+@@ -256,6 +283,26 @@
+ 	if ((result = tcsd_startup()))
+ 		return (int)result;
+ 
++	pwd = getpwnam(TSS_USER_NAME);
++	if (pwd == NULL) {
++		if (errno == 0) {
++			LogError("User \"%s\" not found, please add this user"
++					" manually.", TSS_USER_NAME);
++		} else {
++			LogError("getpwnam(%s): %s", TSS_USER_NAME, strerror(errno));
++		}
++		return TCSERR(TSS_E_INTERNAL_ERROR);
++	}
++	setuid(pwd->pw_uid);
++
++	if (getenv("TCSD_FOREGROUND") == NULL) {
++		if (daemon(0, 0) == -1) {
++			perror("daemon");
++			tcsd_shutdown();
++			return -1;
++		}
++	}
++
+ 	sd = socket(AF_INET, SOCK_STREAM, 0);
+ 	if (sd < 0) {
+ 		LogError("Failed socket: %s", strerror(errno));
+@@ -279,33 +326,12 @@
+ 		LogError("Failed bind: %s", strerror(errno));
+ 		return -1;
+ 	}
+-#ifndef SOLARIS
+-	pwd = getpwnam(TSS_USER_NAME);
+-	if (pwd == NULL) {
+-		if (errno == 0) {
+-			LogError("User \"%s\" not found, please add this user"
+-					" manually.", TSS_USER_NAME);
+-		} else {
+-			LogError("getpwnam(%s): %s", TSS_USER_NAME, strerror(errno));
+-		}
+-		return TCSERR(TSS_E_INTERNAL_ERROR);
+-	}
+-	setuid(pwd->pw_uid);
+-#endif
+ 	if (listen(sd, TCSD_MAX_SOCKETS_QUEUED) < 0) {
+ 		LogError("Failed listen: %s", strerror(errno));
+ 		return -1;
+ 	}
+ 	client_len = (unsigned)sizeof(client_addr);
+ 	
+-	if (getenv("TCSD_FOREGROUND") == NULL) {
+-		if (daemon(0, 0) == -1) {
+-			perror("daemon");
+-			tcsd_shutdown();
+-			return -1;
+-		}
+-	}
+-
+ 	LogInfo("%s: TCSD up and running.", PACKAGE_STRING);
+ 	do {
+ 		newsd = accept(sd, (struct sockaddr *) &client_addr, &client_len);

Added: trunk/security/trousers/files/patch-src-trspi-Makefile.am
===================================================================
--- trunk/security/trousers/files/patch-src-trspi-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-trspi-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,12 @@
+--- src/trspi/Makefile.am.orig	2012-09-20 02:24:48.000000000 +0900
++++ src/trspi/Makefile.am	2013-12-05 15:12:35.000000000 +0900
+@@ -1,7 +1,8 @@
+ noinst_LTLIBRARIES=libtrousers.la
+ 
+ libtrousers_la_SOURCES=trousers.c crypto/@CRYPTO_PACKAGE@/hash.c
+-libtrousers_la_CFLAGS=-DAPPID=\"TSPI\" -I${top_srcdir}/src/include
++libtrousers_la_CFLAGS=-DAPPID=\"TSPI\" -I${top_srcdir}/src/include \
++	-I${ICONV_PREFIX}/include
+ 
+ if TSS_BUILD_ASYM_CRYPTO
+ libtrousers_la_SOURCES+=crypto/@CRYPTO_PACKAGE@/rsa.c

Added: trunk/security/trousers/files/patch-src-tspi-Makefile.am
===================================================================
--- trunk/security/trousers/files/patch-src-tspi-Makefile.am	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tspi-Makefile.am	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/tspi/Makefile.am.orig	2012-09-20 02:24:48.000000000 +0900
++++ src/tspi/Makefile.am	2013-12-05 11:10:14.000000000 +0900
+@@ -17,7 +17,7 @@
+ # 5. If any interfaces have been added since the last public release, then increment age.
+ # 6. If any interfaces have been removed since the last public release, then set age to 0.
+ 
+-libtspi_la_LDFLAGS=-version-info 3:0:2 -lpthread @CRYPTOLIB@
++libtspi_la_LDFLAGS=-version-info 3:0:2 -lpthread @CRYPTOLIB@ -L${ICONV_PREFIX}/lib ${ICONV_LIB}
+ 
+ libtspi_la_CFLAGS=-I$(top_srcdir)/src/include -DAPPID=\"TSPI\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\"
+ 

Added: trunk/security/trousers/files/patch-src-tspi-ps-ps_utils.c
===================================================================
--- trunk/security/trousers/files/patch-src-tspi-ps-ps_utils.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tspi-ps-ps_utils.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,20 @@
+--- src/tspi/ps/ps_utils.c.orig	2010-01-29 01:27:51.000000000 +0900
++++ src/tspi/ps/ps_utils.c	2010-10-24 21:04:04.841558702 +0900
+@@ -22,7 +22,7 @@
+ #include "tspps.h"
+ #include "tsplog.h"
+ 
+-inline TSS_RESULT
++TSS_RESULT
+ read_data(int fd, void *data, UINT32 size)
+ {
+ 	int rc;
+@@ -39,7 +39,7 @@
+ 	return TSS_SUCCESS;
+ }
+ 
+-inline TSS_RESULT
++TSS_RESULT
+ write_data(int fd, void *data, UINT32 size)
+ {
+ 	int rc;

Added: trunk/security/trousers/files/patch-src-tspi-ps-tspps.c
===================================================================
--- trunk/security/trousers/files/patch-src-tspi-ps-tspps.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tspi-ps-tspps.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,89 @@
+--- src/tspi/ps/tspps.c.orig	2012-09-20 02:24:48.000000000 +0900
++++ src/tspi/ps/tspps.c	2013-07-27 04:03:25.000000000 +0900
+@@ -29,6 +29,11 @@
+ #define LE_16 htole16
+ #define LE_32 htole32
+ #define LE_64 htole64
++#elif defined(HAVE_SYS_ENDIAN_H)
++#include <sys/endian.h>
++#define LE_16 htole16
++#define LE_32 htole32
++#define LE_64 htole64
+ #else
+ #define LE_16(x) (x)
+ #define LE_32(x) (x)
+@@ -43,9 +48,13 @@
+ #include "tspps.h"
+ #include "tsplog.h"
+ 
++
+ static int user_ps_fd = -1;
+ static MUTEX_DECLARE_INIT(user_ps_lock);
+ #if (defined (__FreeBSD__) || defined (__OpenBSD__))
++#include <sys/endian.h>
++#define	LE_16 htole16
++#define	LE_32 htole32
+ static MUTEX_DECLARE_INIT(user_ps_path);
+ #endif
+ static struct flock fl;
+@@ -60,9 +69,7 @@
+ 	TSS_RESULT result;
+ 	char *file_name = NULL, *home_dir = NULL;
+ 	struct passwd *pwp;
+-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
+ 	struct passwd pw;
+-#endif
+ 	struct stat stat_buf;
+ 	char buf[PASSWD_BUFSIZE];
+ 	uid_t euid;
+@@ -72,10 +79,6 @@
+ 		*file = strdup(file_name);
+ 		return (*file) ? TSS_SUCCESS : TSPERR(TSS_E_OUTOFMEMORY);
+ 	}
+-#if (defined (__FreeBSD__) || defined (__OpenBSD__))
+-	MUTEX_LOCK(user_ps_path);
+-#endif
+-
+ 	euid = geteuid();
+ 
+ #if defined (SOLARIS)
+@@ -88,32 +91,14 @@
+          */
+         rc = snprintf(buf, sizeof (buf), "%s/%d", TSS_USER_PS_DIR, euid);
+ #else
+-	setpwent();
+-	while (1) {
+-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
+-		rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp);
+-		if (rc) {
+-			LogDebugFn("USER PS: Error getting path to home directory: getpwent_r: %s",
+-				   strerror(rc));
+-			endpwent();
+-			return TSPERR(TSS_E_INTERNAL_ERROR);
+-		}
++	rc = getpwuid_r(euid, &pw, buf, PASSWD_BUFSIZE, &pwp);
++	if (rc) {
++		LogDebugFn("USER PS: Error getting path to home directory: "
++			"getpwent_r: %s", strerror(rc));
++		return TSPERR(TSS_E_INTERNAL_ERROR);
++	}
+ 
+-#elif (defined (__FreeBSD__) || defined (__OpenBSD__))
+-		if ((pwp = getpwent()) == NULL) {
+-			LogDebugFn("USER PS: Error getting path to home directory: getpwent: %s",
+-                                   strerror(rc));
+-			endpwent();
+-			MUTEX_UNLOCK(user_ps_path);
+-			return TSPERR(TSS_E_INTERNAL_ERROR);
+-		}
+-#endif
+-		if (euid == pwp->pw_uid) {
+-                        home_dir = strdup(pwp->pw_dir);
+-                        break;
+-                }
+-        }
+-        endpwent();
++	home_dir = strdup(pwp->pw_dir);
+ 
+ 	if (!home_dir)
+ 		return TSPERR(TSS_E_OUTOFMEMORY);

Added: trunk/security/trousers/files/patch-src-tspi-rpc-hosttable.c
===================================================================
--- trunk/security/trousers/files/patch-src-tspi-rpc-hosttable.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tspi-rpc-hosttable.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,66 @@
+--- src/tspi/rpc/hosttable.c.orig	2012-09-20 02:35:07.000000000 +0900
++++ src/tspi/rpc/hosttable.c	2014-08-06 15:35:22.000000000 +0900
+@@ -36,10 +36,10 @@
+ }
+ 
+ #ifdef SOLARIS
+-#pragma init(_init)
+-void _init(void)
++#pragma init(_init_hosttable)
++void _init_hosttable(void)
+ #else
+-void __attribute__ ((constructor)) my_init(void)
++static void __attribute__ ((constructor)) my_init(void)
+ #endif
+ {
+ 	host_table_init();
+@@ -51,6 +51,8 @@
+ {
+ 	struct host_table_entry *hte, *next = NULL;
+ 
++	if( ht == NULL ) return;
++
+ 	MUTEX_LOCK(ht->lock);
+ 
+ 	for (hte = ht->entries; hte; hte = next) {
+@@ -70,10 +72,10 @@
+ }
+ 
+ #ifdef SOLARIS
+-#pragma fini(_fini)
+-void _fini(void)
++#pragma fini(_fini_hosttable)
++void _fini_hosttable(void)
+ #else
+-void __attribute__ ((destructor)) my_fini(void)
++static void __attribute__ ((destructor)) my_fini(void)
+ #endif
+ {
+ 	host_table_final();
+@@ -84,6 +86,8 @@
+ {
+ 	struct host_table_entry *entry, *tmp;
+ 
++	if( ht == NULL ) return TSPERR(TSS_E_OUTOFMEMORY);
++
+         entry = calloc(1, sizeof(struct host_table_entry));
+         if (entry == NULL) {
+                 LogError("malloc of %zd bytes failed.", sizeof(struct host_table_entry));
+@@ -134,6 +138,8 @@
+ {
+ 	struct host_table_entry *hte, *prev = NULL;
+ 
++	if( ht == NULL ) return;
++
+ 	MUTEX_LOCK(ht->lock);
+ 
+ 	for (hte = ht->entries; hte; prev = hte, hte = hte->next) {
+@@ -158,6 +164,8 @@
+ {
+ 	struct host_table_entry *index = NULL;
+ 
++	if( ht == NULL ) return NULL;
++
+ 	MUTEX_LOCK(ht->lock);
+ 
+ 	for (index = ht->entries; index; index = index->next) {

Added: trunk/security/trousers/files/patch-src-tspi-rpc-tcstp-rpc.c
===================================================================
--- trunk/security/trousers/files/patch-src-tspi-rpc-tcstp-rpc.c	                        (rev 0)
+++ trunk/security/trousers/files/patch-src-tspi-rpc-tcstp-rpc.c	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,11 @@
+--- src/tspi/rpc/tcstp/rpc.c.orig	2010-03-12 05:26:51.000000000 +0900
++++ src/tspi/rpc/tcstp/rpc.c	2010-10-24 21:04:04.846552639 +0900
+@@ -306,7 +306,7 @@
+ 		errno = 0;
+ 		if ((recv_size = recv(sock, buffer+recv_total, size-recv_total, 0)) <= 0) {
+ 			if (recv_size < 0) {
+-				if (errno == EINTR)
++				if (errno == EINTR || errno == EAGAIN)
+ 					continue;
+ 				LogError("Socket receive connection error: %s.", strerror(errno));
+ 			} else {

Added: trunk/security/trousers/files/pkg-message.in
===================================================================
--- trunk/security/trousers/files/pkg-message.in	                        (rev 0)
+++ trunk/security/trousers/files/pkg-message.in	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,9 @@
+To run tcsd automatically, add the following line to /etc/rc.conf
+
+tcsd_enable="YES"
+
+You might want to edit %%PREFIX%%/etc/tcsd.conf to reflect your setup.
+
+To use TPM, add your_account to '%%GROUPS%%' group like following:
+
+# pw groupadd %%GROUPS%% -m your_account

Added: trunk/security/trousers/files/tcsd.in
===================================================================
--- trunk/security/trousers/files/tcsd.in	                        (rev 0)
+++ trunk/security/trousers/files/tcsd.in	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# $FreeBSD: head/security/trousers/files/tcsd.in 361401 2014-07-09 18:51:39Z bdrewery $
+#
+# PROVIDE: tcsd
+# REQUIRE: SERVERS tpmd
+# BEFORE:  named hastd kerberos
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# tcsd_enable (bool): Set to NO by default.
+#                     Set it to YES to enable tcsd.
+
+. /etc/rc.subr
+
+name=tcsd
+rcvar=tcsd_enable
+command="%%PREFIX%%/sbin/${name}"
+start_precmd="tcsd_precmd"
+required_files="%%PREFIX%%/etc/${name}.conf"
+
+tcsd_precmd()
+{
+	/usr/bin/install -d -m 0700 -o %%USERS%% -g %%GROUPS%% \
+		/var/run/tpm /var/run/ima %%PREFIX%%/var/lib/tpm
+	/usr/sbin/chown %%USERS%%:%%GROUPS%% \
+		%%PREFIX%%/etc/tcsd.conf
+	/bin/chmod 0600 \
+		%%PREFIX%%/etc/tcsd.conf
+}
+
+load_rc_config $name
+
+: ${tcsd_enable:="NO"}
+
+run_rc_command "$1"

Added: trunk/security/trousers/pkg-descr
===================================================================
--- trunk/security/trousers/pkg-descr	                        (rev 0)
+++ trunk/security/trousers/pkg-descr	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,4 @@
+TrouSerS is an CPL (Common Public License) licensed Trusted Computing
+Software Stack. It is mostly compliant with the TSS 1.2 specification.
+
+WWW: http://sourceforge.net/projects/trousers

Added: trunk/security/trousers/pkg-plist
===================================================================
--- trunk/security/trousers/pkg-plist	                        (rev 0)
+++ trunk/security/trousers/pkg-plist	2014-09-16 01:36:53 UTC (rev 17322)
@@ -0,0 +1,136 @@
+include/trousers/trousers.h
+include/trousers/tss.h
+include/tss/compat11b.h
+include/tss/platform.h
+include/tss/tcpa_defines.h
+include/tss/tcpa_error.h
+include/tss/tcpa_struct.h
+include/tss/tcpa_typedef.h
+include/tss/tcs.h
+include/tss/tcs_defines.h
+include/tss/tcs_error.h
+include/tss/tcs_structs.h
+include/tss/tcs_typedef.h
+include/tss/tddl_error.h
+include/tss/tddlapi_error.h
+include/tss/tddli.h
+include/tss/tpm.h
+include/tss/tpm_error.h
+include/tss/tpm_ordinal.h
+include/tss/tspi.h
+include/tss/tss_defines.h
+include/tss/tss_error.h
+include/tss/tss_error_basics.h
+include/tss/tss_structs.h
+include/tss/tss_typedef.h
+%%TDDL%%lib/libtddl.a
+lib/libtspi.a
+lib/libtspi.so
+lib/libtspi.so.1
+lib/libtspi.so.1.2.0
+sbin/tcsd
+man/man3/Tspi_ChangeAuth.3.gz
+man/man3/Tspi_ChangeAuthAsym.3.gz
+man/man3/Tspi_Context_Close.3.gz
+man/man3/Tspi_Context_CloseObject.3.gz
+man/man3/Tspi_Context_Connect.3.gz
+man/man3/Tspi_Context_Create.3.gz
+man/man3/Tspi_Context_CreateObject.3.gz
+man/man3/Tspi_Context_FreeMemory.3.gz
+man/man3/Tspi_Context_GetCapability.3.gz
+man/man3/Tspi_Context_GetDefaultPolicy.3.gz
+man/man3/Tspi_Context_GetKeyByPublicInfo.3.gz
+man/man3/Tspi_Context_GetKeyByUUID.3.gz
+man/man3/Tspi_Context_GetRegisteredKeysByUUID.3.gz
+man/man3/Tspi_Context_GetRegisteredKeysByUUID2.3.gz
+man/man3/Tspi_Context_GetTpmObject.3.gz
+man/man3/Tspi_Context_LoadKeyByBlob.3.gz
+man/man3/Tspi_Context_LoadKeyByUUID.3.gz
+man/man3/Tspi_Context_RegisterKey.3.gz
+man/man3/Tspi_Context_UnregisterKey.3.gz
+man/man3/Tspi_DAA_IssueCredential.3.gz
+man/man3/Tspi_DAA_IssueInit.3.gz
+man/man3/Tspi_DAA_IssueSetup.3.gz
+man/man3/Tspi_DAA_IssuerKeyVerification.3.gz
+man/man3/Tspi_DAA_VerifyInit.3.gz
+man/man3/Tspi_DAA_VerifySignature.3.gz
+man/man3/Tspi_Data_Bind.3.gz
+man/man3/Tspi_Data_Seal.3.gz
+man/man3/Tspi_Data_Unbind.3.gz
+man/man3/Tspi_Data_Unseal.3.gz
+man/man3/Tspi_DecodeBER_TssBlob.3.gz
+man/man3/Tspi_EncodeDER_TssBlob.3.gz
+man/man3/Tspi_GetAttribData.3.gz
+man/man3/Tspi_GetAttribUint32.3.gz
+man/man3/Tspi_GetPolicyObject.3.gz
+man/man3/Tspi_Hash_GetHashValue.3.gz
+man/man3/Tspi_Hash_SetHashValue.3.gz
+man/man3/Tspi_Hash_Sign.3.gz
+man/man3/Tspi_Hash_UpdateHashValue.3.gz
+man/man3/Tspi_Hash_VerifySignature.3.gz
+man/man3/Tspi_Key_CertifyKey.3.gz
+man/man3/Tspi_Key_ConvertMigrationBlob.3.gz
+man/man3/Tspi_Key_CreateKey.3.gz
+man/man3/Tspi_Key_CreateMigrationBlob.3.gz
+man/man3/Tspi_Key_GetPubKey.3.gz
+man/man3/Tspi_Key_LoadKey.3.gz
+man/man3/Tspi_Key_UnloadKey.3.gz
+man/man3/Tspi_Key_WrapKey.3.gz
+man/man3/Tspi_PcrComposite_GetPcrValue.3.gz
+man/man3/Tspi_PcrComposite_SelectPcrIndex.3.gz
+man/man3/Tspi_PcrComposite_SetPcrValue.3.gz
+man/man3/Tspi_Policy_AssignToObject.3.gz
+man/man3/Tspi_Policy_FlushSecret.3.gz
+man/man3/Tspi_Policy_SetSecret.3.gz
+man/man3/Tspi_SetAttribData.3.gz
+man/man3/Tspi_SetAttribUint32.3.gz
+man/man3/Tspi_TPM_AuthorizeMigrationTicket.3.gz
+man/man3/Tspi_TPM_CMKSetRestrictions.3.gz
+man/man3/Tspi_TPM_CertifySelfTest.3.gz
+man/man3/Tspi_TPM_CheckMaintenancePubKey.3.gz
+man/man3/Tspi_TPM_ClearOwner.3.gz
+man/man3/Tspi_TPM_CollateIdentityRequest.3.gz
+man/man3/Tspi_TPM_CreateEndorsementKey.3.gz
+man/man3/Tspi_TPM_CreateMaintenanceArchive.3.gz
+man/man3/Tspi_TPM_DAA_JoinCreateDaaPubKey.3.gz
+man/man3/Tspi_TPM_DAA_JoinInit.3.gz
+man/man3/Tspi_TPM_DAA_JoinStoreCredential.3.gz
+man/man3/Tspi_TPM_DAA_Sign.3.gz
+man/man3/Tspi_TPM_DirRead.3.gz
+man/man3/Tspi_TPM_DirWrite.3.gz
+man/man3/Tspi_TPM_GetAuditDigest.3.gz
+man/man3/Tspi_TPM_GetCapability.3.gz
+man/man3/Tspi_TPM_GetEvent.3.gz
+man/man3/Tspi_TPM_GetEventLog.3.gz
+man/man3/Tspi_TPM_GetEvents.3.gz
+man/man3/Tspi_TPM_GetPubEndorsementKey.3.gz
+man/man3/Tspi_TPM_GetRandom.3.gz
+man/man3/Tspi_TPM_GetStatus.3.gz
+man/man3/Tspi_TPM_GetTestResult.3.gz
+man/man3/Tspi_TPM_KillMaintenanceFeature.3.gz
+man/man3/Tspi_TPM_LoadMaintenancePubKey.3.gz
+man/man3/Tspi_TPM_OwnerGetSRKPubKey.3.gz
+man/man3/Tspi_TPM_PcrExtend.3.gz
+man/man3/Tspi_TPM_PcrRead.3.gz
+man/man3/Tspi_TPM_Quote.3.gz
+man/man3/Tspi_TPM_SelfTestFull.3.gz
+man/man3/Tspi_TPM_SetStatus.3.gz
+man/man3/Tspi_TPM_StirRandom.3.gz
+man/man3/Tspi_TPM_TakeOwnership.3.gz
+man/man5/tcsd.conf.5.gz
+man/man8/tcsd.8.gz
+ at unexec cmp -s %D/etc/tcsd.conf %D/etc/tcsd.conf.dist && rm -f %D/etc/tcsd.conf || true
+ at owner _tss
+ at group _tss
+ at mode 0600
+etc/tcsd.conf.dist
+ at exec [ -f %D/etc/tcsd.conf ] || cp -p %D/etc/tcsd.conf.dist %D/etc/tcsd.conf
+ at mode 0700
+ at dirrmtry var/lib/tpm
+ at owner
+ at group
+ at mode
+ at dirrmtry var/lib
+ at dirrmtry var
+ at dirrm include/tss
+ at dirrm include/trousers



More information about the Midnightbsd-cvs mailing list