Hello community,
here is the log from the commit of package trinity for openSUSE:Factory checked in at 2016-03-03 15:16:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/trinity (Old)
and /work/SRC/openSUSE:Factory/.trinity.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trinity"
Changes:
--------
--- /work/SRC/openSUSE:Factory/trinity/trinity.changes 2016-02-05 00:31:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.trinity.new/trinity.changes 2016-03-03 15:16:23.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Mar 2 07:52:44 UTC 2016 - normand@linux.vnet.ibm.com
+
+- Update to 20160301 to avoid PowerPC build failure
+ remove 0001-net-protocols.c-fix-build-on-old-machines.patch
+
+-------------------------------------------------------------------
Old:
----
0001-net-protocols.c-fix-build-on-old-machines.patch
trinity-20160131.tar.xz
New:
----
trinity-20160301.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ trinity.spec ++++++
--- /var/tmp/diff_new_pack.fdNFRF/_old 2016-03-03 15:16:24.000000000 +0100
+++ /var/tmp/diff_new_pack.fdNFRF/_new 2016-03-03 15:16:24.000000000 +0100
@@ -17,14 +17,13 @@
Name: trinity
-Version: 20160131
+Version: 20160301
Release: 0
Summary: A Linux System call fuzz tester
License: GPL-2.0
Group: Development/Tools/Other
Url: http://codemonkey.org.uk/projects/trinity/
Source0: %{name}-%{version}.tar.xz
-Patch0: 0001-net-protocols.c-fix-build-on-old-machines.patch
# SLE11-SP*, for -std=gnu11
%if 0%{suse_version} == 1110
@@ -52,14 +51,13 @@
%prep
%setup -q
-%patch0 -p1
%build
%if 0%{suse_version} == 1110
export CC=gcc-4.%{gcc_minor}
%endif
export CFLAGS="%{optflags}"
-./configure.sh
+./configure
make %{?_smp_mflags} V=1
%install
++++++ trinity-20160131.tar.xz -> trinity-20160301.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/Makefile new/trinity-20160301/Makefile
--- old/trinity-20160131/Makefile 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/Makefile 2016-03-01 18:05:38.000000000 +0100
@@ -10,7 +10,9 @@
CC := $(CROSS_COMPILE)$(CC)
LD := $(CROSS_COMPILE)$(LD)
-CFLAGS += -Wall -Wextra -g -O2 -I. -Iinclude/ -Wimplicit -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D__linux__ -std=gnu11
+CFLAGS += -Wall -Wextra -g -O2 -I. -Iinclude/ -Wimplicit -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D__linux__
+
+CFLAGS += $(shell if $(CC) -std=gnu11 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-std=gnu11"; else echo "-std=gnu99"; fi)
# Only enabled during development, and on gcc 4.9+
CPP_MAJOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/configure new/trinity-20160301/configure
--- old/trinity-20160131/configure 1970-01-01 01:00:00.000000000 +0100
+++ new/trinity-20160301/configure 2016-03-01 18:05:38.000000000 +0100
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+CONFIGH="config.h"
+
+if [ -t 1 ]; then
+ RED="[1;31m"
+ GREEN="[1;32m"
+ COL_RESET="[0;m"
+fi
+
+MISSING_DEFS=0
+
+[ -z "$CC" ] && CC=gcc
+
+# expand tilde
+CC="$(eval echo ${CROSS_COMPILE}${CC})"
+
+CFLAGS="${CFLAGS}"
+if [ "${SYSROOT}xx" != "xx" ]; then
+ CFLAGS="${CFLAGS} $(eval echo --sysroot=${SYSROOT} )"
+fi
+
+echo "#pragma once" > $CONFIGH
+echo "/* This file is auto-generated by configure.sh */" >> $CONFIGH
+
+TMP=$(mktemp)
+
+check_header()
+{
+ echo -n "[*] Checking header $1 ... "
+
+ rm -f "$TMP" || exit 1
+ echo "#include <$1>" >"$TMP.c"
+
+ ${CC} ${CFLAGS} "$TMP.c" -E &>"$TMP.log"
+ if [ $? -eq 0 ]; then
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define $2 1" >> $CONFIGH
+ else
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+ fi
+}
+
+#############################################################################################
+
+echo "[*] Checking system headers."
+
+#############################################################################################
+# Are ipv6 headers usable ?
+[ -z "$IPV6" ] && IPV6=yes
+if [[ "$IPV6" == "yes" ]]; then
+ echo -n "[*] Checking ipv6 headers ... "
+ RET=$(grep __UAPI_DEF_IN6_PKTINFO /usr/include/linux/ipv6.h)
+ if [ -z "$RET" ]; then
+ echo $RED "[BROKEN]" $COL_RESET "See https://patchwork.ozlabs.org/patch/425881/"
+ else
+ echo $GREEN "[OK]" $COL_RESET
+ echo "#define USE_IPV6 1" >> $CONFIGH
+ fi
+fi
+
+#############################################################################################
+# is /usr/include/linux/if_pppox.h new enough to feature pppol2tpin6/pppol2tpv3in6
+#
+echo -n "[*] Checking if pppox can use pppol2tpin6.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+#include
+#include
+
+void main()
+{
+ struct sockaddr_pppol2tpin6 *pppox;
+ printf("%d\n", pppox->sa_family);
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define USE_PPPOL2TPIN6 1" >> $CONFIGH
+fi
+
+#############################################################################################
+# is /usr/include/linux/if_pppox.h new enough to feature pppol2tpv3
+#
+echo -n "[*] Checking if pppox can use pppol2tv3.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+#include
+#include
+
+void main()
+{
+ struct sockaddr_pppol2tpv3 *pppox;
+ printf("%d\n", pppox->sa_family);
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define USE_PPPOL2TPV3 1" >> $CONFIGH
+fi
+
+#############################################################################################
+# is /usr/include/linux/if_pppox.h new enough to feature pptp
+#
+echo -n "[*] Checking if pppox can use pptp.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+#include
+#include
+
+void main()
+{
+ struct sockaddr_pppox *pppox;
+ printf("%d\n", pppox->sa_addr.pptp.call_id);
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define USE_PPPOX_PPTP 1" >> $CONFIGH
+fi
+
+#############################################################################################
+# is /usr/include/linux/llc.h new enough to feature LLC_OPT_PKTINFO
+#
+echo -n "[*] Checking if llc can use LLC_OPT_PKTINFO.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+#include
+
+void main()
+{
+ printf("%d\n", LLC_OPT_PKTINFO);
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define USE_LLC_OPT_PKTINFO 1" >> $CONFIGH
+fi
+
+#############################################################################################
+# Do glibc headers provides struct termios2
+
+echo -n "[*] Checking if glibc headers provide termios2.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+#include
+
+int main()
+{
+ struct termios2 test;
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define HAVE_TERMIOS2 1" >> $CONFIGH
+fi
+
+#############################################################################################
+# Do glibc headers provides nvme ioctls
+
+echo -n "[*] Checking if glibc headers provide nvme ioctls.. "
+rm -f "$TMP" || exit 1
+
+cat >"$TMP.c" << EOF
+#include
+#include
+
+int main(int argc, char* argv[])
+{
+ unsigned int foo = NVME_IOCTL_IO_CMD;
+}
+EOF
+
+${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
+if [ ! -x "$TMP" ]; then
+ echo $RED "[NO]" $COL_RESET
+ MISSING_DEFS=1
+else
+ echo $GREEN "[YES]" $COL_RESET
+ echo "#define USE_NVME 1" >> $CONFIGH
+fi
+
+#############################################################################################
+
+check_header linux/caif/caif_socket.h USE_CAIF
+check_header linux/if_alg.h USE_IF_ALG
+check_header linux/rds.h USE_RDS
+check_header linux/vfio.h USE_VFIO
+check_header linux/btrfs.h USE_BTRFS
+check_header drm/drm.h USE_DRM
+check_header drm/exynos_drm.h USE_DRM_EXYNOS
+check_header sound/compress_offload.h USE_SNDDRV_COMPRESS_OFFLOAD
+check_header linux/kvm.h USE_KVM
+check_header linux/seccomp.h USE_SECCOMP
+check_header linux/vhost.h USE_VHOST
+check_header execinfo.h USE_BACKTRACE
+check_header netatalk/at.h USE_APPLETALK
+check_header netrom/netrom.h USE_NETROM
+check_header netrose/rose.h USE_ROSE
+
+rm -f "$TMP" "$TMP.log" "$TMP.c"
+
+#############################################################################################
+
+if [ "$MISSING_DEFS" == "1" ]; then
+ echo "[-] Some header definitions were missing. This is not fatal."
+ echo " It usually means you're building on an older distribution which doesn't"
+ echo " have header files describing newer kernel features."
+ echo " Trinity will still compile and run, it just won't use those new features."
+ echo " Go ahead, and run 'make'"
+fi
+
+exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/configure.sh new/trinity-20160301/configure.sh
--- old/trinity-20160131/configure.sh 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/configure.sh 1970-01-01 01:00:00.000000000 +0100
@@ -1,254 +0,0 @@
-#!/bin/bash
-
-CONFIGH="config.h"
-
-if [ -t 1 ]; then
- RED="[1;31m"
- GREEN="[1;32m"
- COL_RESET="[0;m"
-fi
-
-MISSING_DEFS=0
-
-[ -z "$CC" ] && CC=gcc
-
-# expand tilde
-CC="$(eval echo ${CROSS_COMPILE}${CC})"
-
-CFLAGS="${CFLAGS}"
-if [ "${SYSROOT}xx" != "xx" ]; then
- CFLAGS="${CFLAGS} $(eval echo --sysroot=${SYSROOT} )"
-fi
-
-echo "#pragma once" > $CONFIGH
-echo "/* This file is auto-generated by configure.sh */" >> $CONFIGH
-
-TMP=$(mktemp)
-
-check_header()
-{
- echo -n "[*] Checking header $1 ... "
-
- rm -f "$TMP" || exit 1
- echo "#include <$1>" >"$TMP.c"
-
- ${CC} ${CFLAGS} "$TMP.c" -E &>"$TMP.log"
- if [ $? -eq 0 ]; then
- echo $GREEN "[YES]" $COL_RESET
- echo "#define $2 1" >> $CONFIGH
- else
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
- fi
-}
-
-#############################################################################################
-
-echo "[*] Checking system headers."
-
-#############################################################################################
-# Are ipv6 headers usable ?
-[ -z "$IPV6" ] && IPV6=yes
-if [[ "$IPV6" == "yes" ]]; then
- echo -n "[*] Checking ipv6 headers ... "
- RET=$(grep __UAPI_DEF_IN6_PKTINFO /usr/include/linux/ipv6.h)
- if [ -z "$RET" ]; then
- echo $RED "[BROKEN]" $COL_RESET "See https://patchwork.ozlabs.org/patch/425881/"
- else
- echo $GREEN "[OK]" $COL_RESET
- echo "#define USE_IPV6 1" >> $CONFIGH
- fi
-fi
-
-#############################################################################################
-# is /usr/include/linux/if_pppox.h new enough to feature pppol2tpin6/pppol2tpv3in6
-#
-echo -n "[*] Checking if pppox can use pppol2tpin6.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-#include
-#include
-
-void main()
-{
- struct sockaddr_pppol2tpin6 *pppox;
- printf("%d\n", pppox->sa_family);
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define USE_PPPOL2TPIN6 1" >> $CONFIGH
-fi
-
-#############################################################################################
-# is /usr/include/linux/if_pppox.h new enough to feature pppol2tpv3
-#
-echo -n "[*] Checking if pppox can use pppol2tv3.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-#include
-#include
-
-void main()
-{
- struct sockaddr_pppol2tpv3 *pppox;
- printf("%d\n", pppox->sa_family);
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define USE_PPPOL2TPV3 1" >> $CONFIGH
-fi
-
-#############################################################################################
-# is /usr/include/linux/if_pppox.h new enough to feature pptp
-#
-echo -n "[*] Checking if pppox can use pptp.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-#include
-#include
-
-void main()
-{
- struct sockaddr_pppox *pppox;
- printf("%d\n", pppox->sa_addr.pptp.call_id);
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define USE_PPPOX_PPTP 1" >> $CONFIGH
-fi
-
-#############################################################################################
-# is /usr/include/linux/llc.h new enough to feature LLC_OPT_PKTINFO
-#
-echo -n "[*] Checking if llc can use LLC_OPT_PKTINFO.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-#include
-
-void main()
-{
- printf("%d\n", LLC_OPT_PKTINFO);
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define USE_LLC_OPT_PKTINFO 1" >> $CONFIGH
-fi
-
-#############################################################################################
-# Do glibc headers provides struct termios2
-
-echo -n "[*] Checking if glibc headers provide termios2.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-#include
-
-int main()
-{
- struct termios2 test;
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define HAVE_TERMIOS2 1" >> $CONFIGH
-fi
-
-#############################################################################################
-# Do glibc headers provides nvme ioctls
-
-echo -n "[*] Checking if glibc headers provide nvme ioctls.. "
-rm -f "$TMP" || exit 1
-
-cat >"$TMP.c" << EOF
-#include
-#include
-
-int main(int argc, char* argv[])
-{
- unsigned int foo = NVME_IOCTL_IO_CMD;
-}
-EOF
-
-${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log"
-if [ ! -x "$TMP" ]; then
- echo $RED "[NO]" $COL_RESET
- MISSING_DEFS=1
-else
- echo $GREEN "[YES]" $COL_RESET
- echo "#define USE_NVME 1" >> $CONFIGH
-fi
-
-#############################################################################################
-
-check_header linux/caif/caif_socket.h USE_CAIF
-check_header linux/if_alg.h USE_IF_ALG
-check_header linux/rds.h USE_RDS
-check_header linux/vfio.h USE_VFIO
-check_header linux/btrfs.h USE_BTRFS
-check_header drm/drm.h USE_DRM
-check_header drm/exynos_drm.h USE_DRM_EXYNOS
-check_header sound/compress_offload.h USE_SNDDRV_COMPRESS_OFFLOAD
-check_header linux/kvm.h USE_KVM
-check_header linux/seccomp.h USE_SECCOMP
-check_header linux/vhost.h USE_VHOST
-check_header execinfo.h USE_BACKTRACE
-check_header netatalk/at.h USE_APPLETALK
-check_header netrom/netrom.h USE_NETROM
-check_header netrose/rose.h USE_ROSE
-
-rm -f "$TMP" "$TMP.log" "$TMP.c"
-
-#############################################################################################
-
-if [ "$MISSING_DEFS" == "1" ]; then
- echo "[-] Some header definitions were missing. This is not fatal."
- echo " It usually means you're building on an older distribution which doesn't"
- echo " have header files describing newer kernel features."
- echo " Trinity will still compile and run, it just won't use those new features."
- echo " Go ahead, and run 'make'"
-fi
-
-exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/fds/fds.c new/trinity-20160301/fds/fds.c
--- old/trinity-20160131/fds/fds.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/fds/fds.c 2016-03-01 18:05:38.000000000 +0100
@@ -66,7 +66,9 @@
output(0, "Registered %d fd providers.\n", num_fd_providers);
}
-unsigned int open_fds(void)
+static unsigned int num_fd_providers_initialized = 0;
+
+static void __open_fds(bool do_rand)
{
struct list_head *node;
@@ -75,15 +77,40 @@
provider = (struct fd_provider *) node;
+ /* disabled on cmdline */
if (provider->enabled == FALSE)
continue;
+ /* already done */
+ if (provider->initialized == TRUE)
+ continue;
+
+ if (do_rand == TRUE) {
+ /* to mix up init order */
+ if (RAND_BOOL())
+ continue;
+ }
+
provider->enabled = provider->open();
- if (provider->enabled == TRUE)
+ if (provider->enabled == TRUE) {
+ provider->initialized = TRUE;
+ num_fd_providers_initialized++;
num_fd_providers_enabled++;
+ }
}
+}
- output(0, "Enabled %d fd providers.\n", num_fd_providers_enabled);
+unsigned int open_fds(void)
+{
+ /* Open half the providers randomly */
+ while (num_fd_providers_initialized < (num_fd_providers / 2))
+ __open_fds(TRUE);
+
+ /* Now open any leftovers */
+ __open_fds(FALSE);
+
+ output(0, "Enabled %d fd providers: initialized:%d.\n",
+ num_fd_providers_enabled, num_fd_providers_initialized);
return TRUE;
}
@@ -112,6 +139,10 @@
if (provider->enabled == FALSE) // FIXME: Better would be to just remove disabled providers from the list.
goto retry;
+ // Hasn't been run yet.
+ if (provider->initialized == FALSE)
+ goto retry;
+
fd = provider->get();
break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/fds/perf.c new/trinity-20160301/fds/perf.c
--- old/trinity-20160131/fds/perf.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/fds/perf.c 2016-03-01 18:05:38.000000000 +0100
@@ -21,6 +21,7 @@
{
struct objhead *head;
unsigned int i = 0;
+ unsigned int perm_count = 0;
head = get_objhead(OBJ_GLOBAL, OBJ_FD_PERF);
head->destroy = &perffd_destructor;
@@ -43,13 +44,25 @@
output(2, "fd[%d] = perf\n", fd);
i++;
} else {
- /* If ENOSYS, bail early rather than do MAX_PERF_FDS retries */
- if (errno == ENOSYS)
- return TRUE;
-
- /* If we get here we probably generated something invalid and
- * perf_event_open threw it out. Go around the loop again.
- */
+ switch (errno) {
+ case ENOSYS:
+ /* If ENOSYS, bail early rather than do MAX_PERF_FDS retries */
+ return FALSE;
+
+ case EINVAL:
+ /* If we get here we probably generated something invalid and
+ * perf_event_open threw it out. Go around the loop again.
+ */
+ continue;
+
+ case EACCES:
+ perm_count++;
+ }
+ }
+
+ if (perm_count > 1000) {
+ output(2, "Couldn't open enough perf events, got EPERM too much. Giving up.\n");
+ return FALSE;
}
if (shm->exit_reason != STILL_RUNNING)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/fds/pipes.c new/trinity-20160301/fds/pipes.c
--- old/trinity-20160131/fds/pipes.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/fds/pipes.c 2016-03-01 18:05:38.000000000 +0100
@@ -67,6 +67,9 @@
obj = get_random_object(OBJ_FD_PIPE, OBJ_GLOBAL);
+ if (obj == NULL)
+ return 0;
+
return obj->pipefd;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/fds/sockets.c new/trinity-20160301/fds/sockets.c
--- old/trinity-20160131/fds/sockets.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/fds/sockets.c 2016-03-01 18:05:38.000000000 +0100
@@ -372,7 +372,7 @@
type = buffer[1];
protocol = buffer[2];
- if (domain > TRINITY_PF_MAX) {
+ if (domain >= TRINITY_PF_MAX) {
output(1, "cachefile contained invalid domain %u\n", domain);
goto regenerate;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/compat.h new/trinity-20160301/include/compat.h
--- old/trinity-20160131/include/compat.h 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/include/compat.h 2016-03-01 18:05:38.000000000 +0100
@@ -1088,3 +1088,12 @@
#ifndef NVME_IOCTL_RESET
#define NVME_IOCTL_RESET _IO('N', 0x44)
#endif
+
+/* linux/shm.h */
+#ifndef SHM_HUGE_SHIFT
+#define SHM_HUGE_SHIFT 26
+#endif
+#ifndef SHM_HUGE_2MB
+#define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_1GB (30 << SHM_HUGE_SHIFT)
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/fd.h new/trinity-20160301/include/fd.h
--- old/trinity-20160131/include/fd.h 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/include/fd.h 2016-03-01 18:05:38.000000000 +0100
@@ -17,6 +17,7 @@
int (*open)(void);
int (*get)(void);
bool enabled;
+ bool initialized;
};
unsigned int check_if_fd(struct childdata *child, struct syscallrecord *rec);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/net.h new/trinity-20160301/include/net.h
--- old/trinity-20160131/include/net.h 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/include/net.h 2016-03-01 18:05:38.000000000 +0100
@@ -48,7 +48,7 @@
struct protoptr {
const struct netproto *proto;
};
-extern const struct protoptr net_protocols[PF_MAX];
+extern const struct protoptr net_protocols[TRINITY_PF_MAX];
const struct fd_provider socket_fd_provider;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/object-types.h new/trinity-20160301/include/object-types.h
--- old/trinity-20160131/include/object-types.h 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/include/object-types.h 2016-03-01 18:05:38.000000000 +0100
@@ -18,5 +18,6 @@
OBJ_FD_USERFAULTFD,
OBJ_FD_FANOTIFY,
OBJ_FUTEX,
+ OBJ_SYSV_SHM,
MAX_OBJECT_TYPES,
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/objects.h new/trinity-20160301/include/objects.h
--- old/trinity-20160131/include/objects.h 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/include/objects.h 2016-03-01 18:05:38.000000000 +0100
@@ -6,6 +6,7 @@
#include "futex.h"
#include "object-types.h"
#include "maps.h"
+#include "sysv-shm.h"
struct object {
struct list_head list;
@@ -39,6 +40,8 @@
struct socketinfo sockinfo;
struct __lock lock; /* futex */
+
+ struct sysv_shm sysv_shm;
};
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/include/sysv-shm.h new/trinity-20160301/include/sysv-shm.h
--- old/trinity-20160131/include/sysv-shm.h 1970-01-01 01:00:00.000000000 +0100
+++ new/trinity-20160301/include/sysv-shm.h 2016-03-01 18:05:38.000000000 +0100
@@ -0,0 +1,10 @@
+#pragma once
+
+void create_sysv_shms(void);
+
+struct sysv_shm {
+ void *ptr;
+ int id;
+ size_t size;
+ int flags;
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/locks.c new/trinity-20160301/locks.c
--- old/trinity-20160131/locks.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/locks.c 2016-03-01 18:05:38.000000000 +0100
@@ -11,11 +11,7 @@
/*
* Check that the processes holding locks are still alive.
- * And if they are, ensure they haven't held them for an
- * excessive length of time.
*/
-#define STEAL_THRESHOLD 1000000
-
static bool check_lock(lock_t *_lock)
{
pid_t pid;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/log.c new/trinity-20160301/log.c
--- old/trinity-20160131/log.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/log.c 2016-03-01 18:05:38.000000000 +0100
@@ -103,7 +103,7 @@
}
/* go on with file logs only if enabled */
- if (logging == LOGGING_FILES)
+ if (logging == LOGGING_DISABLED)
return;
handle = find_logfile_handle();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/main.c new/trinity-20160301/main.c
--- old/trinity-20160131/main.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/main.c 2016-03-01 18:05:38.000000000 +0100
@@ -730,6 +730,12 @@
}
print_stats();
+
+ /* This should never happen, but just to catch corner cases, like if
+ * fork() failed when we tried to replace a child.
+ */
+ if (shm->running_childs < max_children)
+ fork_children();
}
/* if the pid map is corrupt, we can't trust that we'll
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/mm/fault-write.c new/trinity-20160301/mm/fault-write.c
--- old/trinity-20160131/mm/fault-write.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/mm/fault-write.c 2016-03-01 18:05:38.000000000 +0100
@@ -82,9 +82,9 @@
* a strlen and go off the end. */
static void dirty_last_page(struct map *map)
{
- char *p = map->ptr;
+ char *p = map->ptr + map->size - page_size;
- memset((void *) p + (map->size - page_size), 'A', page_size);
+ memset((void *) p, 'A', page_size);
}
static const struct faultfn write_faultfns_single[] = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/net/proto-alg.c new/trinity-20160301/net/proto-alg.c
--- old/trinity-20160131/net/proto-alg.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/net/proto-alg.c 2016-03-01 18:05:38.000000000 +0100
@@ -48,17 +48,21 @@
"authenc(hmac(sha1),cbc(aes))",
"authenc(hmac(sha1),cbc(des))",
"authenc(hmac(sha1),cbc(des3_ede))",
+ "authenc(hmac(sha1),ctr(aes))"
"authenc(hmac(sha1),ecb(cipher_null))",
"authenc(hmac(sha224),cbc(des))",
"authenc(hmac(sha224),cbc(des3_ede))",
"authenc(hmac(sha256),cbc(aes))",
"authenc(hmac(sha256),cbc(des))",
"authenc(hmac(sha256),cbc(des3_ede))",
+ "authenc(hmac(sha256),ctr(aes))"
"authenc(hmac(sha384),cbc(des))",
"authenc(hmac(sha384),cbc(des3_ede))",
+ "authenc(hmac(sha384),ctr(aes))"
"authenc(hmac(sha512),cbc(aes))",
"authenc(hmac(sha512),cbc(des))",
"authenc(hmac(sha512),cbc(des3_ede))",
+ "authenc(hmac(sha512),ctr(aes))"
"cbc(aes)",
"cbc(anubis)",
"cbc(blowfish)",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/net/protocols.c new/trinity-20160301/net/protocols.c
--- old/trinity-20160131/net/protocols.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/net/protocols.c 2016-03-01 18:05:38.000000000 +0100
@@ -1,8 +1,9 @@
#include
#include "config.h"
#include "net.h"
+#include "compat.h"
-const struct protoptr net_protocols[PF_MAX] = {
+const struct protoptr net_protocols[TRINITY_PF_MAX] = {
[PF_UNIX] = { .proto = &proto_unix },
[PF_INET] = { .proto = &proto_ipv4 },
[PF_AX25] = { .proto = &proto_ax25 },
@@ -43,5 +44,7 @@
[PF_PPPOX] = { .proto = &proto_pppol2tp },
[PF_IUCV] = { .proto = &proto_iucv },
[PF_RXRPC] = { .proto = &proto_rxrpc },
+#ifdef USE_IF_ALG
[PF_ALG] = { .proto = &proto_alg },
+#endif
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/objects.c new/trinity-20160301/objects.c
--- old/trinity-20160131/objects.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/objects.c 2016-03-01 18:05:38.000000000 +0100
@@ -83,6 +83,11 @@
output(0, "futex: %lx owner:%d\n",
obj->lock.futex, obj->lock.owner_pid);
break;
+ case OBJ_SYSV_SHM:
+ output(0, "sysv_shm: id:%u size:%d flags:%x ptr:%p\n",
+ obj->sysv_shm.id, obj->sysv_shm.size,
+ obj->sysv_shm.flags, obj->sysv_shm.ptr);
+ break;
case MAX_OBJECT_TYPES:
default:
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/rand/random-page.c new/trinity-20160301/rand/random-page.c
--- old/trinity-20160131/rand/random-page.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/rand/random-page.c 2016-03-01 18:05:38.000000000 +0100
@@ -88,7 +88,7 @@
/* If we only have a small buffer, don't do
* the longer generators. */
- if (len < 20)
+ if (len < 24)
randrange = 6;
else {
/* Make sure we're always dealing with an even number */
@@ -127,7 +127,7 @@
p = (char *) ptr;
- while (p < (char *)(ptr + (len-22))) { // 22 is the longest case below + separator.
+ while (p < (char *)(ptr + (len-23))) { // 23 is the longest case below + separator.
if (RAND_BOOL()) {
/* hex */
switch (rnd() % 3) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/rand/random.c new/trinity-20160301/rand/random.c
--- old/trinity-20160131/rand/random.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/rand/random.c 2016-03-01 18:05:38.000000000 +0100
@@ -186,7 +186,7 @@
*/
u64 rand64(void)
{
- unsigned long r = 0;
+ u64 r = 0;
switch (rnd() % 8) {
@@ -207,7 +207,7 @@
break;
case 4: r = randbits(64);
break;
- case 5: r = (0ULL | rnd()) << 32 | rnd();
+ case 5: r = (u64) rnd() << 32 | rnd();
break;
case 6: r = rept_byte();
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/syscalls/mlockall.c new/trinity-20160301/syscalls/mlockall.c
--- old/trinity-20160131/syscalls/mlockall.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/syscalls/mlockall.c 2016-03-01 18:05:38.000000000 +0100
@@ -8,9 +8,15 @@
#include "syscall.h"
#include "trinity.h"
+#ifndef MCL_CURRENT
#define MCL_CURRENT 1
+#endif
+#ifndef MCL_FUTURE
#define MCL_FUTURE 2
+#endif
+#ifndef MCL_ONFAULT
#define MCL_ONFAULT 4
+#endif
static void sanitise_mlockall(struct syscallrecord *rec)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/syscalls/shmctl.c new/trinity-20160301/syscalls/shmctl.c
--- old/trinity-20160131/syscalls/shmctl.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/syscalls/shmctl.c 2016-03-01 18:05:38.000000000 +0100
@@ -1,12 +1,22 @@
/*
* SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
*/
+#include
+#include
#include "sanitise.h"
+static unsigned long shmctl_ops[] = {
+ IPC_STAT, IPC_SET, IPC_RMID, IPC_INFO,
+ SHM_INFO, SHM_STAT, SHM_LOCK, SHM_UNLOCK,
+};
+
struct syscallentry syscall_shmctl = {
.name = "shmctl",
.num_args = 3,
.arg1name = "shmid",
.arg2name = "cmd",
+ .arg2type = ARG_OP,
+ .arg2list = ARGLIST(shmctl_ops),
.arg3name = "buf",
+ .arg3type = ARG_ADDRESS,
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/sysv-shm.c new/trinity-20160301/sysv-shm.c
--- old/trinity-20160131/sysv-shm.c 1970-01-01 01:00:00.000000000 +0100
+++ new/trinity-20160301/sysv-shm.c 2016-03-01 18:05:38.000000000 +0100
@@ -0,0 +1,56 @@
+/*
+ * SYSV Shared mapping creation.
+ */
+
+#include
+#include
+
+#include "arch.h"
+#include "compat.h"
+#include "random.h"
+#include "sysv-shm.h"
+#include "objects.h"
+#include "utils.h"
+
+void create_sysv_shms(void)
+{
+ unsigned int i;
+ int shmget_flags[] = {
+ 0, // Just CREAT|EXCL
+ SHM_HUGETLB|SHM_HUGE_2MB,
+ SHM_HUGETLB|SHM_HUGE_1GB,
+ SHM_NORESERVE,
+ SHM_HUGETLB|SHM_HUGE_2MB|SHM_NORESERVE,
+ SHM_HUGETLB|SHM_HUGE_1GB|SHM_NORESERVE,
+ };
+
+ for (i = 0; i < ARRAY_SIZE(shmget_flags); i++) {
+ void *p;
+ struct object *obj;
+ size_t size = 0;
+ int flags;
+ int id;
+
+ obj = alloc_object();
+
+ flags = 0660 | IPC_CREAT | IPC_EXCL | shmget_flags[i];
+
+ size = page_size * (1 + rnd() % 10);
+
+ id = shmget(IPC_PRIVATE, page_size, flags);
+ if (id == -1) {
+ free(obj);
+ continue;
+ }
+ obj->sysv_shm.id = id;
+ obj->sysv_shm.flags = flags;
+ obj->sysv_shm.size = size;
+
+ add_object(obj, OBJ_GLOBAL, OBJ_SYSV_SHM);
+
+ p = shmat(id, NULL, 0); // TODO: Try alternative flags.
+ if (p != (void *) -1)
+ obj->sysv_shm.ptr = p;
+ }
+ //dump_objects(OBJ_GLOBAL, OBJ_SYSV_SHM);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/tables-uniarch.c new/trinity-20160301/tables-uniarch.c
--- old/trinity-20160131/tables-uniarch.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/tables-uniarch.c 2016-03-01 18:05:38.000000000 +0100
@@ -121,10 +121,11 @@
void deactivate_disabled_syscalls_uniarch(void)
{
- struct syscallentry *entry;
unsigned int i;
for_each_syscall(i) {
+ struct syscallentry *entry;
+
entry = syscalls[i].entry;
if (entry->flags & TO_BE_DEACTIVATED) {
entry->flags &= ~(ACTIVE|TO_BE_DEACTIVATED);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20160131/trinity.c new/trinity-20160301/trinity.c
--- old/trinity-20160131/trinity.c 2016-02-02 09:27:02.000000000 +0100
+++ new/trinity-20160301/trinity.c 2016-03-01 18:05:38.000000000 +0100
@@ -18,6 +18,7 @@
#include "random.h"
#include "signals.h"
#include "shm.h"
+#include "sysv-shm.h"
#include "futex.h"
#include "tables.h"
#include "taint.h"
@@ -164,7 +165,10 @@
parse_devices();
+ /* FIXME: Some better object construction method needed. */
create_futexes();
+ create_sysv_shms();
+
setup_main_signals();