diff --git a/pkgs/servers/openpts/bugs.patch b/pkgs/servers/openpts/bugs.patch new file mode 100644 index 000000000000..d818bafbc9f3 --- /dev/null +++ b/pkgs/servers/openpts/bugs.patch @@ -0,0 +1,12 @@ +diff -urNp openpts-0.2.6-cvs-patched/src/fsm.c openpts-0.2.6-current/src/fsm.c +--- openpts-0.2.6-cvs-patched/src/fsm.c 2012-01-05 03:49:15.000000000 -0500 ++++ openpts-0.2.6-current/src/fsm.c 2012-01-09 12:11:17.338706205 -0500 +@@ -934,7 +934,7 @@ char *getEventString(OPENPTS_PCR_EVENT_W + /* event */ + event = eventWrapper->event; + if (event != NULL) { +- // len = snprintf(buf, size, "PCR[%d],TYPE=%d", (int)event->ulPcrIndex, event->eventType); ++ snprintf(buf, size, "PCR[%d],TYPE=%d", (int)event->ulPcrIndex, event->eventType); + } else { + LOG(LOG_ERR, "NULL event\n"); // TODO(munetoh) + xfree(buf); diff --git a/pkgs/servers/openpts/default.nix b/pkgs/servers/openpts/default.nix new file mode 100644 index 000000000000..7d82af72b554 --- /dev/null +++ b/pkgs/servers/openpts/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, autoconf, automake, pkgconfig, libtool, trousers, openssl, libxml2, libuuid, gettext, perl }: + +stdenv.mkDerivation rec { + name = "openpts-${version}"; + version = "0.2.6"; + + src = fetchurl { + url = "http://jaist.dl.osdn.jp/openpts/54410/openpts-${version}.tar.gz"; + sha256 = "1b5phshl49fxr5y3g5zz75gm0n4cw8i7n29x5f1a95xkwrjpazi0"; + }; + + # patches from https://apps.fedoraproject.org/packages/openpts/sources/patches/ + patches = [ ./bugs.patch ./zlib.patch ./tboot.patch ./ptsc.patch ]; + + buildInputs = [ autoconf automake pkgconfig libtool trousers openssl libxml2 libuuid gettext ]; + + preConfigure = '' + substituteInPlace include/Makefile.am --replace "./cvs2msg.pl" "${perl}/bin/perl cvs2msg.pl"; + $SHELL bootstrap.sh + ''; + + configureFlags = [ "--with-tss" "--with-aru" "--with-tboot" "--enable-tnc" "--with-aide" ]; + + NIX_CFLAGS_COMPILE = "-I${trousers}/include/trousers -I${trousers}/include/tss"; + + preInstall = '' + mkdir -p $out + mkdir -p $out/etc + cp -p dist/ptsc.conf.in $out/etc/ptsc.conf + cp -p dist/ptsv.conf.in $out/etc/ptsv.conf + mkdir -p $out/share/openpts/models + cp -p models/*.uml $out/share/openpts/models/ + + mkdir -p $out/share/openpts/tpm_emulator + cp dist/tpm_emulator/README.rhel $out/share/openpts/tpm_emulator/README + cp dist/tpm_emulator/binary_bios_measurements $out/share/openpts/tpm_emulator/ + cp dist/tpm_emulator/tcsd $out/share/openpts/tpm_emulator/ + + mkdir -p $out/share/openpts/tboot + cp dist/tboot/README.fedora15 $out/share/openpts/tboot/README + cp dist/tboot/ptsc.conf.fedora15 $out/share/openpts/tboot/ptsc.conf + cp dist/tboot/tcsd.conf.fedora15 $out/share/openpts/tboot/tcsd.conf + cp dist/tboot/tcsd.fedora15 $out/share/openpts/tboot/tcsd + ''; + + meta = { + description = "TCG Platform Trust Service (PTS)"; + homepage = "ttp://sourceforge.jp/projects/openpts"; + license = stdenv.lib.licenses.cpl10; + platforms = stdenv.lib.platforms.unix; + maintainers = with stdenv.lib.maintainers; [ tstrobel ]; + }; +} diff --git a/pkgs/servers/openpts/ptsc.patch b/pkgs/servers/openpts/ptsc.patch new file mode 100644 index 000000000000..b6fcde740744 --- /dev/null +++ b/pkgs/servers/openpts/ptsc.patch @@ -0,0 +1,28 @@ +diff -urNp openpts-0.2.6-patched/src/ptsc.c openpts-0.2.6-current/src/ptsc.c +--- openpts-0.2.6-patched/src/ptsc.c 2012-08-21 15:57:07.733841433 -0400 ++++ openpts-0.2.6-current/src/ptsc.c 2012-08-21 16:13:26.479732504 -0400 +@@ -457,7 +457,10 @@ void ptsc_lock(void) { + exit(1); + } + oldgrp = getegid(); +- setegid(grp.gr_gid); ++ if(setegid(grp.gr_gid) != 0){ ++ LOG(LOG_ERR, "setegid fail"); ++ exit(1); ++ } + } + + oldmask = umask(0); +@@ -467,7 +470,10 @@ void ptsc_lock(void) { + } + if (grpent) { + chmod(LOCK_DIR, 02775); +- setegid(oldgrp); ++ if(setegid(oldgrp) != 0){ ++ LOG(LOG_ERR, "setegid fail"); ++ exit(1); ++ } + } + fd = open(LOCK_FILE, O_RDWR | O_CREAT | O_TRUNC, 0660); + if (fd < 0) { + diff --git a/pkgs/servers/openpts/tboot.patch b/pkgs/servers/openpts/tboot.patch new file mode 100644 index 000000000000..6ecee5839202 --- /dev/null +++ b/pkgs/servers/openpts/tboot.patch @@ -0,0 +1,21 @@ +diff -urNp openpts-0.2.6-patched/src/tboot2iml.c openpts-0.2.6-current/src/tboot2iml.c +--- openpts-0.2.6-patched/src/tboot2iml.c 2012-07-23 16:30:12.381361421 -0400 ++++ openpts-0.2.6-current/src/tboot2iml.c 2012-07-23 17:25:59.053945778 -0400 +@@ -531,7 +531,7 @@ int sinit_acm_hash(char *filename, int s + + + int sha1sum_unzip(char *filename, int *filesize, BYTE *digest) { +- FILE *fp; ++ gzFile fp; + char buf[2048]; + SHA_CTX sha_ctx; + int len; +@@ -541,7 +541,7 @@ int sha1sum_unzip(char *filename, int *f + + /* open */ + fp = gzopen(filename, "rb"); +- if (fp == NULL) { ++ if (fp == Z_NULL) { + LOG(LOG_ERR, "File %s does not exist\n", filename); + return 0; + } diff --git a/pkgs/servers/openpts/zlib.patch b/pkgs/servers/openpts/zlib.patch new file mode 100644 index 000000000000..7fa3fce10fe9 --- /dev/null +++ b/pkgs/servers/openpts/zlib.patch @@ -0,0 +1,12 @@ +diff -urNp openpts-0.2.6-cvs-patched/src/Makefile.am openpts-0.2.6-current/src/Makefile.am +--- openpts-0.2.6-cvs-patched/src/Makefile.am 2012-01-05 03:49:15.000000000 -0500 ++++ openpts-0.2.6-current/src/Makefile.am 2012-01-09 14:12:02.507361732 -0500 +@@ -30,7 +30,7 @@ localedir = $(datadir)/locale + + + AM_CPPFLAGS = -I$(top_srcdir)/include $(LIBXML2_CFLAGS) $(TSS_CFLAGS) -I../include -DLOCALEDIR=\"$(localedir)\" +-AM_LDFLAGS = $(LIBXML2_LIBS) $(LIBCRYPTO_LIBS) $(TSS_LIBS) -lopenpts ++AM_LDFLAGS = $(LIBXML2_LIBS) $(LIBCRYPTO_LIBS) $(TSS_LIBS) -lz -lopenpts + # $(LIBINTL) -lopenpts + + if HAVE_LIBUUID diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a342d7ab72ac..53f2197069aa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9024,6 +9024,8 @@ let nsq = callPackage ../servers/nsq { }; + openpts = callPackage ../servers/openpts { }; + openresty = callPackage ../servers/http/openresty { }; opensmtpd = callPackage ../servers/mail/opensmtpd { };