Hello community, here is the log from the commit of package trinity for openSUSE:Factory checked in at 2015-01-15 15:58:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2014-12-22 12:52:56.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.trinity.new/trinity.changes 2015-01-15 15:59:08.000000000 +0100 @@ -1,0 +2,5 @@ +Wed Jan 14 15:13:16 UTC 2015 - jsl...@suse.com + +- update to 20150107 + +------------------------------------------------------------------- Old: ---- trinity-20141206.tar.xz New: ---- trinity-20150107.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ trinity.spec ++++++ --- /var/tmp/diff_new_pack.R3BNE7/_old 2015-01-15 15:59:09.000000000 +0100 +++ /var/tmp/diff_new_pack.R3BNE7/_new 2015-01-15 15:59:09.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package trinity # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: trinity -Version: 20141206 +Version: 20150107 Release: 0 Summary: A Linux System call fuzz tester License: GPL-2.0 ++++++ trinity-20141206.tar.xz -> trinity-20150107.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/Documentation/Known-bugs.txt new/trinity-20150107/Documentation/Known-bugs.txt --- old/trinity-20141206/Documentation/Known-bugs.txt 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/Documentation/Known-bugs.txt 2015-01-14 16:12:54.000000000 +0100 @@ -1,3 +1,11 @@ +- render_arg occasionally scribbles past the end of the postbuffer. + This becomes more obvious when trinity is run with MALLOC_PERTURB_ set. + +- getrandom syscall can block, and the watchdog can't kill it. + Might need a ->sanitise routine to prevent blocking ops. + +- -c execve seems to always pass the same junk as args. + - -r and -c don't seem to work together - when we randomly call personality, the child stops logging. @@ -21,4 +29,3 @@ - occasionally trinity fails to startup because we've leaked so much ipc stuff. cleanup on startup. (scripts/clean-ipc.sh in the meantime) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/Documentation/TODO new/trinity-20150107/Documentation/TODO --- old/trinity-20141206/Documentation/TODO 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/Documentation/TODO 2015-01-14 16:12:54.000000000 +0100 @@ -4,30 +4,39 @@ - do file ops on a bunch of trinity test files - open->read->close - open->mmap->access mem->close - - sysctl flipper. + - sysctl writes. (blacklist sysrq-trigger etc) - pick random elevator alg for all queues - - fork-and-dirty mappings + - fork-and-dirty mappings + - send fd's over unix sockets to other children + - open/read all /proc/$$/* files + - tuned random syscalls. (open -> read -> close). tree of possibilities. - Ability to mark some ops as 'NEEDS_ROOT'. - Move the drop privs code from main to just before we start a new child. -* maps.c improvements: - - Sometimes generate overlapping addresses/lengths when we have ARG_ADDRESS/ARG_ADDRESS2 pairs - - make sure ARG_ADDRESS only uses addresses from this list, and audit all other mmap/malloc uses - in sanitise routines. - - munge lengths when handing them out. - - mmap files - (we do this already, but don't track it properly) - - get_map_fragment() - - mprotect parts of a map - will need to somehow track what pages are RO/RW etc - - keep track of holes when munmap'd - split maps in two ? - (store original len, and current len) +* vm related improvements: + - mmapping: + - Sometimes generate overlapping addresses/lengths when we have ARG_ADDRESS/ARG_ADDRESS2 pairs + - munge lengths when handing out maps. + - mmap files + (we do this already, but don't track it properly) + - get_map_fragment() + - keep track of holes when mprotect/munmap'd + split maps in two ? + (store original len, and current len) + note: initial maps are MAP_SHARED. What to do? + - mapping transaction log for dumping in post-mortem + - huge pages + - hugetlbfs mappings + - crib from hugetlbfs tests examples for more ideas. + - /dev/shm mappings + - pass memfd's in mmap sanitise + - sysv shm handling could be improved. * munge_process() on child startup - replace fork() with random clone() - run children in different namespaces, personalities. - unshare + - do some random fcntls to all fd's on child spawn * ioctl improvements - needs filename globbing for some ioctls @@ -39,33 +48,41 @@ - Make -D use a separate debug log file - if we have a large number of children, we use up a lot of fd's for the log files. Instead of keeping them all open, reopen them as needed. + - mprotect the child struct around write accesses + - improve debugf re: http://c-faq.com/varargs/handoff.html + - Activate the function tracer before each syscall. Flush before calling. * postmortem improvements - change child->syscall / ->previous to be a ringbuffer of syscallrecord structs. - Compare timestamp that taint was noticed at, ignore all later. - -* Do taint watching in the child loop too. + - log 'unfinished' if state isn't complete. + - is post mortem code generating ESC0m ? + - function that takes a void * and outputs what it is (mapping, page_* etc) + (searches various lists etc) * --dry-run mode. need to work around segv's when we do things like mmap->post and register null maps. -* Rewrite the fd code. +* fd handling improvements. - kill off NR_FILE_FDS - open some files in the child too after forking. - this requires a child-local fd mapping table. Maybe we can then reduce the size of the shared shm->file_fds - When requesting an fd, occasionally generate a new one. - - Could we do the nftw walks in parallel ? - That would speed up startup a lot. Though would need to pass list back up to main thread somehow. + - parallelize nftw walks on startup using threads. - support for multiple victim file parameters - - When picking a random path, instead of treating the pool of paths as one thing, + - nftw of /lib/modules ? (for passing to init_module) + (if run as root) + - separate lists for dev sysfs etc + When picking a random path, instead of treating the pool of paths as one thing, treat it as multiple (/dev, /sys, /proc). And then do a 1-in-3 chance of getting one of those. Right now, because there are 5-6 digits worth of /proc & /sys, they dominate over the /dev entries. - more fd 'types' (fanotify_init) - -* Change regeneration code. - - Instead of every n syscalls, make it happen after 15 minutes (but with a minimum of n syscalls) + - need a way to go from fd to string describing what it is. for post-mortem + - Attach an operation history to each fd for post-mortem. + Maybe we need an fd container struct ? + - deregister fd providers if init of one fails * Pretty-print improvements. - decode fd number -> filename in output @@ -76,6 +93,7 @@ * Watchdog improvements - in main loop, check watchdog is still alive - RT watchdog task ? + - check if HI > total * filename related issues. - filename cache. @@ -93,16 +111,34 @@ - also need to watch /proc/$$/exe, look up using shm->pids. - file list struct extensions - use count + - create N testfiles for each -V * Networking improvements. + - More focus on non-ipv4 protocols. + - igmp + - ipv6 / 6to4 + - sctp + - ipip + - tun (vxlan / gre) + - ppp + - pppoe + - tipc + - rds + - nfc + - nft + - iscsi - Rewrite socket generation. Organise into (sorted) per-protocol buckets of linked-lists.. - Search buckets for dupes before adding. - for syscalls that take a fd and a sockaddr, look up the triplet and match. - Flesh out sockaddr/socket gen for all remaining protocols. - - setsockopt on network sockets when we regenerate - Disabled right now, because it causes some socket types to hang. + - setsockopt coverage is still lacking for some protocols. + - improve netlink fuzzing - specify an ip of a victim machine (Maybe also config file) + - --proto-exclude + - better spread of net protocols on startup + - check EAFNOSUPPORT if -P + - speed up PF_CAN creation * Improve the ->post routine to walk a list of objects that we allocated during a syscalls ->sanitise in a ->post method. @@ -128,7 +164,9 @@ * if a read() blocks and we get a kill from the watchdog, blacklist (close?) that fd/filename. -* Some of the syscalls marked AVOID are done so for good reason. +* Various syscall improvements. + - Create futexes on startup and make syscalls/futex.c use them. + - brk could be smarter about existing brk - Revisit fuzzing ptrace. - It's disabled currently because of situations like.. child a traces child b @@ -136,7 +174,7 @@ child b never proceeds, and doesn't get untraced. * Further syscall annotation improvements - - Finish annotating syscall return types + - Finish annotating syscall return types & error codes. * structured logging. - To begin with, in parallel with existing text based logging. @@ -159,17 +197,52 @@ - To begin with, just allow replay/bisect using one child process. Synchronising threads across different runs may be complicated. +* Misc improvements. + - implement _lock->queue so waiters get the lock on a FIFO basis. + - Add a NEEDS_ROOT flag for syscalls that are expected to fail. + (and then if !root, deactivate them on startup) + - --stats + - count segv's. + - avoid BORING syscalls. geteuid etc is kinda pointless. + (maybe an override param to call them) + - unix socket for comms between children/parent. + also other apps so we can do stats gathering, debug, config changes etc + * Misc cleanups - Move arch specific syscalls into syscalls/arch/ - Move addresses in get_interesting_value() to a function in per-arch headers. + - audit all uses of rand64 for 32bit builds + - possible helpers + - zfree (free & null) + - check_errno(EINVAL) + (checks if -1, and checks errno, returns bool) + - set_random_bits() + - fix up -q. trinity -h needs to be more silent + - add a kernel rodata addr to trinity (sys_call_table for eg) * watch dmesg buffer for interesting kernel messages and halt if necessary. Lockdep for eg. - Pause on oops. Sometimes we might want to read trinity state when we trigger a bad event. * Blocked child improvements. - - if we find a blocking fd, check if it's a socket, and shutdown() it. + - if we find a blocking fd, check if it's a socket, and shutdown() it. (tricky: we need to do the shutdown in the main process, and then tell other children) * make -p take an arg for seconds +* things to check. + - execve occasionally returns -ESRCH. Why ? + - disappearing processes. 'oom killed maybe' when no oom. + +* pthreads. (Real long term, lots of work). + - allocate separate childdata for each thread, and pass into pthread_create + - allocate child->syscall.pre/post buffers too + (maybe just use reinit_child?) + - child_process takes ptr to childdata struct (just shm addr for processes) + - set_seed needs to factor in pthread number. + - locking needs to be pthread aware + put mutex in lock_t ? + - logging for threads? + will need a pthread watchdog in same process group + - send pthread_kill + - propagate progress up to main watchdog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/fault-write.c new/trinity-20150107/fault-write.c --- old/trinity-20141206/fault-write.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/fault-write.c 2015-01-14 16:12:54.000000000 +0100 @@ -103,9 +103,13 @@ switch (rand() % 3) { case 0: switch (rand() % 3) { - case 0: p = sprintf(page, "%lu", (unsigned long) rand64()); - break; - case 1: p = sprintf(page, "%ld", (unsigned long) rand64()); + case 0: p = sprintf(page, "%s%lu", + rand_bool() ? "-" : "", + (unsigned long) rand64()); + break; + case 1: p = sprintf(page, "%s%ld", + rand_bool() ? "-" : "", + (unsigned long) rand64()); break; case 2: p = sprintf(page, "%lx", (unsigned long) rand64()); break; @@ -114,9 +118,13 @@ case 1: switch (rand() % 3) { - case 0: p = sprintf(page, "%u", (unsigned int) rand32()); - break; - case 1: p = sprintf(page, "%d", (int) rand32()); + case 0: p = sprintf(page, "%s%u", + rand_bool() ? "-" : "", + (unsigned int) rand32()); + break; + case 1: p = sprintf(page, "%s%d", + rand_bool() ? "-" : "", + (int) rand32()); break; case 2: p = sprintf(page, "%x", (int) rand32()); break; @@ -125,9 +133,13 @@ case 2: switch (rand() % 3) { - case 0: p = sprintf(page, "%u", (unsigned char) rand()); - break; - case 1: p = sprintf(page, "%d", (char) rand()); + case 0: p = sprintf(page, "%s%u", + rand_bool() ? "-" : "", + (unsigned char) rand()); + break; + case 1: p = sprintf(page, "%s%d", + rand_bool() ? "-" : "", + (char) rand()); break; case 2: p = sprintf(page, "%x", (char) rand()); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/generate-args.c new/trinity-20150107/generate-args.c --- old/trinity-20141206/generate-args.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/generate-args.c 2015-01-14 16:12:54.000000000 +0100 @@ -10,7 +10,6 @@ #include "maps.h" #include "net.h" #include "random.h" -#include "random.h" #include "sanitise.h" #include "shm.h" #include "syscall.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/compat.h new/trinity-20150107/include/compat.h --- old/trinity-20141206/include/compat.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/compat.h 2015-01-14 16:12:54.000000000 +0100 @@ -15,6 +15,9 @@ #ifndef AT_EMPTY_PATH #define AT_EMPTY_PATH 0x1000 #endif +#ifndef AT_SYMLINK_NOFOLLOW +#define AT_SYMLINK_NOFOLLOW 0x100 +#endif #ifndef O_PATH #define O_PATH 010000000 /* Resolve pathname but do not open file. */ @@ -397,6 +400,10 @@ #define SO_BPF_EXTENSIONS 48 #endif +#ifndef SO_INCOMING_CPU +#define SO_INCOMING_CPU 49 +#endif + /* linux/tcp.h */ #ifndef TCP_COOKIE_TRANSACTIONS #define TCP_COOKIE_TRANSACTIONS 15 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-i386.h new/trinity-20150107/include/syscalls-i386.h --- old/trinity-20141206/include/syscalls-i386.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-i386.h 2015-01-14 16:12:54.000000000 +0100 @@ -1,6 +1,6 @@ #pragma once -/* Syscalls from arch/x86/syscalls/syscall_32.tbl as of 3.17+ */ +/* Syscalls from arch/x86/syscalls/syscall_32.tbl */ #include "sanitise.h" #include "syscall.h" @@ -365,4 +365,5 @@ { .entry = &syscall_getrandom }, { .entry = &syscall_memfd_create }, { .entry = &syscall_bpf }, + { .entry = &syscall_execveat }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-ia64.h new/trinity-20150107/include/syscalls-ia64.h --- old/trinity-20141206/include/syscalls-ia64.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-ia64.h 2015-01-14 16:12:54.000000000 +0100 @@ -1,6 +1,6 @@ #pragma once -/* Syscalls from arch/ia64/kernel/entry.S as of 3.17+ */ +/* Syscalls from arch/ia64/kernel/entry.S */ #include "sanitise.h" #include "syscall.h" @@ -325,4 +325,5 @@ { .entry = &syscall_getrandom }, { .entry = &syscall_memfd_create }, { .entry = &syscall_bpf }, + { .entry = &syscall_execveat }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-s390.h new/trinity-20150107/include/syscalls-s390.h --- old/trinity-20141206/include/syscalls-s390.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-s390.h 2015-01-14 16:12:54.000000000 +0100 @@ -359,4 +359,6 @@ { .entry = &syscall_getrandom }, { .entry = &syscall_memfd_create }, { .entry = &syscall_bpf }, + { .entry = &syscall_ni_syscall }, // TODO: syscall_s390_pci_mmio_write + { .entry = &syscall_ni_syscall }, // TODO: syscall_s390_pci_mmio_read }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-s390x.h new/trinity-20150107/include/syscalls-s390x.h --- old/trinity-20141206/include/syscalls-s390x.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-s390x.h 2015-01-14 16:12:54.000000000 +0100 @@ -359,4 +359,6 @@ { .entry = &syscall_getrandom }, { .entry = &syscall_memfd_create }, { .entry = &syscall_bpf }, + { .entry = &syscall_ni_syscall }, // TODO: syscall_s390_pci_mmio_write + { .entry = &syscall_ni_syscall }, // TODO: syscall_s390_pci_mmio_read }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-sparc.h new/trinity-20150107/include/syscalls-sparc.h --- old/trinity-20141206/include/syscalls-sparc.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-sparc.h 2015-01-14 16:12:54.000000000 +0100 @@ -357,4 +357,5 @@ { .entry = &syscall_getrandom }, { .entry = &syscall_memfd_create }, { .entry = &syscall_bpf }, + { .entry = &syscall_execveat }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/include/syscalls-x86_64.h new/trinity-20150107/include/syscalls-x86_64.h --- old/trinity-20141206/include/syscalls-x86_64.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/include/syscalls-x86_64.h 2015-01-14 16:12:54.000000000 +0100 @@ -1,6 +1,6 @@ #pragma once -/* Syscalls from arch/x86/syscalls/syscall_64.tbl as of 3.17+ */ +/* Syscalls from arch/x86/syscalls/syscall_64.tbl */ #include "sanitise.h" #include "syscall.h" @@ -329,4 +329,5 @@ { .entry = &syscall_memfd_create }, { .entry = &syscall_kexec_file_load }, { .entry = &syscall_bpf }, + { .entry = &syscall_execveat }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/net/proto-socket.c new/trinity-20150107/net/proto-socket.c --- old/trinity-20141206/net/proto-socket.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/net/proto-socket.c 2015-01-14 16:12:54.000000000 +0100 @@ -16,7 +16,7 @@ SO_PASSSEC, SO_TIMESTAMPNS, SO_MARK, SO_TIMESTAMPING, SO_PROTOCOL, SO_DOMAIN, SO_RXQ_OVFL, SO_WIFI_STATUS, SO_PEEK_OFF, SO_NOFCS, SO_LOCK_FILTER, SO_SELECT_ERR_QUEUE, - SO_BUSY_POLL, SO_MAX_PACING_RATE, SO_BPF_EXTENSIONS }; + SO_BUSY_POLL, SO_MAX_PACING_RATE, SO_BPF_EXTENSIONS, SO_INCOMING_CPU }; void socket_setsockopt(struct sockopt *so) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/params.c new/trinity-20150107/params.c --- old/trinity-20141206/params.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/params.c 2015-01-14 16:12:54.000000000 +0100 @@ -140,19 +140,6 @@ outputstd("opt:%c\n", opt); return; - case 'b': - init_bdev_list(); - process_bdev_param(optarg); - dump_bdev_list(); - outputstd("--bdev doesn't do anything useful yet.\n"); - exit(EXIT_SUCCESS); - - case 'c': - /* syscalls are all disabled at this point. enable the syscall we care about. */ - do_specific_syscall = TRUE; - toggle_syscall(optarg, TRUE); - break; - case 'a': /* One of the architectures selected*/ do_32_arch = FALSE; @@ -169,6 +156,19 @@ } break; + case 'b': + init_bdev_list(); + process_bdev_param(optarg); + dump_bdev_list(); + outputstd("--bdev doesn't do anything useful yet.\n"); + exit(EXIT_SUCCESS); + + case 'c': + /* syscalls are all disabled at this point. enable the syscall we care about. */ + do_specific_syscall = TRUE; + toggle_syscall(optarg, TRUE); + break; + case 'C': user_specified_children = strtoll(optarg, NULL, 10); max_children = user_specified_children; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/patches/silence-fuzz-testing-noise.patch new/trinity-20150107/patches/silence-fuzz-testing-noise.patch --- old/trinity-20141206/patches/silence-fuzz-testing-noise.patch 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/patches/silence-fuzz-testing-noise.patch 2015-01-14 16:12:54.000000000 +0100 @@ -1,23 +1,7 @@ -From 0267f449b83ad4a85acd3ca4d5386080dfc79c35 Mon Sep 17 00:00:00 2001 +From 2683419e05ab227cd24a5859db044fe3941d6574 Mon Sep 17 00:00:00 2001 From: Dave Jones <da...@redhat.com> Date: Mon, 13 May 2013 16:53:02 -0400 -Subject: [PATCH 12/34] silence fuzz-testing noise - ---- - arch/x86/ia32/sys_ia32.c | 9 --------- - arch/x86/kernel/vm86_32.c | 9 +++------ - drivers/gpu/drm/drm_sysfs.c | 2 -- - drivers/scsi/scsi_netlink.c | 10 ++-------- - kernel/signal.c | 1 - - net/appletalk/ddp.c | 5 ----- - net/can/af_can.c | 9 --------- - net/core/sock.c | 7 ------- - net/irda/af_irda.c | 6 ++---- - net/netfilter/ipvs/ip_vs_core.c | 2 -- - net/rds/bind.c | 2 -- - net/socket.c | 2 -- - sound/pci/hda/hda_codec.c | 8 +++----- - 13 files changed, 10 insertions(+), 62 deletions(-) +Subject: [PATCH 11/44] silence fuzz-testing noise diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 8e0ceecdc957..e8071976793c 100644 @@ -65,10 +49,10 @@ tss = &per_cpu(init_tss, get_cpu()); current->thread.sp0 = current->thread.saved_sp0; diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c -index c22c3097c3e8..64a6372fca0c 100644 +index cc3d6d6d67e0..306b3a9189b9 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c -@@ -284,7 +284,6 @@ static ssize_t subconnector_show(struct device *device, +@@ -285,7 +285,6 @@ static ssize_t subconnector_show(struct device *device, } if (!prop) { @@ -76,7 +60,7 @@ return 0; } -@@ -325,7 +324,6 @@ static ssize_t select_subconnector_show(struct device *device, +@@ -326,7 +325,6 @@ static ssize_t select_subconnector_show(struct device *device, } if (!prop) { @@ -115,10 +99,10 @@ /* * Deliver message to the appropriate transport diff --git a/kernel/signal.c b/kernel/signal.c -index 6ea13c09ae56..6dfb3b49ad7c 100644 +index 16a305295256..e1ebea3db6e7 100644 --- a/kernel/signal.c +++ b/kernel/signal.c -@@ -3057,7 +3057,6 @@ static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) +@@ -3044,7 +3044,6 @@ static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) if (((info->si_code >= 0 || info->si_code == SI_TKILL)) && (task_pid_vnr(current) != pid)) { /* We used to allow any < 0 si_code */ @@ -127,7 +111,7 @@ } info->si_signo = sig; diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c -index 786ee2f83d5f..e6cc543afe59 100644 +index 0d0766ea5ab1..4362a4404078 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c @@ -1204,12 +1204,7 @@ static int atalk_connect(struct socket *sock, struct sockaddr *uaddr, @@ -144,10 +128,10 @@ lock_sock(sk); diff --git a/net/can/af_can.c b/net/can/af_can.c -index a27f8aad9e99..63b85afb1f5f 100644 +index 66e08040ced7..8cd31fd8ff8b 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c -@@ -157,15 +157,6 @@ static int can_create(struct net *net, struct socket *sock, int protocol, +@@ -154,15 +154,6 @@ static int can_create(struct net *net, struct socket *sock, int protocol, err = request_module("can-proto-%d", protocol); @@ -164,7 +148,7 @@ } #endif diff --git a/net/core/sock.c b/net/core/sock.c -index 87366a065687..a6c48a2e9f83 100644 +index 1c7a33db1314..b981f9108eb5 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -392,14 +392,7 @@ static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen) @@ -182,36 +166,49 @@ return 0; } *timeo_p = MAX_SCHEDULE_TIMEOUT; +diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c +index 0bb68df5055d..65772ffdde12 100644 +--- a/net/ipv4/raw.c ++++ b/net/ipv4/raw.c +@@ -518,8 +518,6 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, + if (msg->msg_namelen < sizeof(*usin)) + goto out; + if (usin->sin_family != AF_INET) { +- pr_info_once("%s: %s forgot to set AF_INET. Fix it!\n", +- __func__, current->comm); + err = -EAFNOSUPPORT; + if (usin->sin_family) + goto out; diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c -index 54747c25c86c..c8522dca57af 100644 +index 568edc72d737..fa19e6ef5ff3 100644 --- a/net/irda/af_irda.c +++ b/net/irda/af_irda.c -@@ -504,10 +504,8 @@ static int irda_open_lsap(struct irda_sock *self, int pid) +@@ -494,10 +494,8 @@ static int irda_open_lsap(struct irda_sock *self, int pid) { notify_t notify; - if (self->lsap) { -- IRDA_WARNING("%s(), busy!\n", __func__); +- net_warn_ratelimited("%s(), busy!\n", __func__); + if (self->lsap) return -EBUSY; - } /* Initialize callbacks to be used by the IrDA stack */ irda_notify_init(¬ify); -@@ -2130,7 +2128,7 @@ static int irda_setsockopt(struct socket *sock, int level, int optname, - __func__, opt); +@@ -2105,8 +2103,6 @@ static int irda_setsockopt(struct socket *sock, int level, int optname, + __func__, opt); self->max_sdu_size_rx = opt; } else { -- IRDA_WARNING("%s: not allowed to set MAXSDUSIZE for this socket type!\n", -+ IRDA_DEBUG(2, "%s: not allowed to set MAXSDUSIZE for this socket type!\n", - __func__); +- net_warn_ratelimited("%s: not allowed to set MAXSDUSIZE for this socket type!\n", +- __func__); err = -ENOPROTOOPT; goto out; + } diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c -index 4f26ee46b51f..5057562bc48d 100644 +index 990decba1fe4..ce9887ca8109 100644 --- a/net/netfilter/ipvs/ip_vs_core.c +++ b/net/netfilter/ipvs/ip_vs_core.c -@@ -1969,8 +1969,6 @@ static int __net_init __ip_vs_init(struct net *net) +@@ -1975,8 +1975,6 @@ static int __net_init __ip_vs_init(struct net *net) if (ip_vs_sync_net_init(net) < 0) goto sync_fail; @@ -233,11 +230,24 @@ goto out; } +diff --git a/net/sctp/socket.c b/net/sctp/socket.c +index 2625eccb77d5..2678af5c129d 100644 +--- a/net/sctp/socket.c ++++ b/net/sctp/socket.c +@@ -6312,8 +6312,6 @@ static int sctp_listen_start(struct sock *sk, int backlog) + sprintf(alg, "hmac(%s)", sp->sctp_hmac_alg); + tfm = crypto_alloc_hash(alg, 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { +- net_info_ratelimited("failed to load transform for %s: %ld\n", +- sp->sctp_hmac_alg, PTR_ERR(tfm)); + return -ENOSYS; + } + sctp_sk(sk)->hmac = tfm; diff --git a/net/socket.c b/net/socket.c -index 1f02293cb011..661c38221da8 100644 +index a2c33a4dc7ba..326e4a9ebcd9 100644 --- a/net/socket.c +++ b/net/socket.c -@@ -2607,8 +2607,6 @@ int sock_register(const struct net_proto_family *ops) +@@ -2592,8 +2592,6 @@ int sock_register(const struct net_proto_family *ops) err = 0; } spin_unlock(&net_family_lock); @@ -246,11 +256,26 @@ return err; } EXPORT_SYMBOL(sock_register); +diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c +index 6da7532893a1..d4588654ee68 100644 +--- a/security/selinux/hooks.c ++++ b/security/selinux/hooks.c +@@ -4723,10 +4723,6 @@ static int selinux_nlmsg_perm(struct sock *sk, struct sk_buff *skb) + err = selinux_nlmsg_lookup(sksec->sclass, nlh->nlmsg_type, &perm); + if (err) { + if (err == -EINVAL) { +- printk(KERN_WARNING +- "SELinux: unrecognized netlink message:" +- " protocol=%hu nlmsg_type=%hu sclass=%hu\n", +- sk->sk_protocol, nlh->nlmsg_type, sksec->sclass); + if (!selinux_enforcing || security_get_allow_unknown()) + err = 0; + } diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c -index 4c20277a6835..324dee2eaef0 100644 +index 2fe86d2e1b09..7643b0e7c6da 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c -@@ -572,12 +572,10 @@ int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid, +@@ -581,12 +581,10 @@ int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid, } range_val = !!(parm & (1 << (shift-1))); /* ranges */ val = parm & mask; @@ -266,44 +291,3 @@ parm >>= shift; if (range_val) { /* ranges between the previous and this one */ -diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c -index a9dbe58bdfe7..bd06a009f885 100644 ---- a/net/ipv4/raw.c -+++ b/net/ipv4/raw.c -@@ -498,8 +498,6 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, - if (msg->msg_namelen < sizeof(*usin)) - goto out; - if (usin->sin_family != AF_INET) { -- pr_info_once("%s: %s forgot to set AF_INET. Fix it!\n", -- __func__, current->comm); - err = -EAFNOSUPPORT; - if (usin->sin_family) - goto out; -diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index a3fdfa90b0e8..935d0a66fffe 100644 ---- a/net/sctp/socket.c -+++ b/net/sctp/socket.c -@@ -6088,8 +6088,6 @@ static int sctp_listen_start(struct sock *sk, int backlog) - sprintf(alg, "hmac(%s)", sp->sctp_hmac_alg); - tfm = crypto_alloc_hash(alg, 0, CRYPTO_ALG_ASYNC); - if (IS_ERR(tfm)) { -- net_info_ratelimited("failed to load transform for %s: %ld\n", -- sp->sctp_hmac_alg, PTR_ERR(tfm)); - return -ENOSYS; - } - sctp_sk(sk)->hmac = tfm; -diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c -index c603b20356ad..2ce54858002e 100644 ---- a/security/selinux/hooks.c -+++ b/security/selinux/hooks.c -@@ -4725,10 +4725,6 @@ static int selinux_nlmsg_perm(struct sock *sk, struct sk_buff *skb) - err = selinux_nlmsg_lookup(sksec->sclass, nlh->nlmsg_type, &perm); - if (err) { - if (err == -EINVAL) { -- printk(KERN_WARNING -- "SELinux: unrecognized netlink message:" -- " protocol=%hu nlmsg_type=%hu sclass=%hu\n", -- sk->sk_protocol, nlh->nlmsg_type, sksec->sclass); - if (!selinux_enforcing || security_get_allow_unknown()) - err = 0; - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/patches/silence-noisy-deprecated-warnings-while-fuzzing.patch new/trinity-20150107/patches/silence-noisy-deprecated-warnings-while-fuzzing.patch --- old/trinity-20141206/patches/silence-noisy-deprecated-warnings-while-fuzzing.patch 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/patches/silence-noisy-deprecated-warnings-while-fuzzing.patch 2015-01-14 16:12:54.000000000 +0100 @@ -1,10 +1,13 @@ -silence noisy 'deprecated' warnings while fuzzing +From b8bcb7a15ae1c4a878874dc25402c314734e5424 Mon Sep 17 00:00:00 2001 +From: Dave Jones <da...@redhat.com> +Date: Mon, 13 May 2013 16:52:41 -0400 +Subject: [PATCH 10/44] silence noisy 'deprecated' warnings while fuzzing diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c -index 1236c6011c70..bab0a1916d8f 100644 +index d26973844a4d..bf34697d50c2 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c -@@ -400,13 +400,6 @@ static const char auto_string[] = "auto"; +@@ -392,13 +392,6 @@ static const char auto_string[] = "auto"; static void warn_level(void) { @@ -19,17 +22,16 @@ static ssize_t level_show(struct device *dev, struct device_attribute *attr, diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c -index e19d4c0cacae..3bf259b16d53 100644 +index 5eba47f593f8..43b90af80006 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c -@@ -968,13 +968,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, +@@ -966,12 +966,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, if (creat_flags == HUGETLB_SHMFS_INODE && !can_do_hugetlb_shm()) { *user = current_user(); - if (user_shm_lock(size, *user)) { - task_lock(current); -- printk_once(KERN_WARNING -- "%s (%d): Using mlock ulimits for SHM_HUGETLB is deprecated\n", +- pr_warn_once("%s (%d): Using mlock ulimits for SHM_HUGETLB is deprecated\n", - current->comm, current->pid); - task_unlock(current); - } else { @@ -38,19 +40,20 @@ return ERR_PTR(-EPERM); } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 442177b1119a..ce743b0ca749 100644 +index 246eae84b13b..869945b9ceea 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c -@@ -807,8 +807,6 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf, +@@ -843,9 +843,6 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf, if (type == CLEAR_REFS_SOFT_DIRTY) { soft_dirty_cleared = true; -- pr_warn_once("The pagemap bits 55-60 has changed their meaning! " -- "See the linux/Documentation/vm/pagemap.txt for details.\n"); +- pr_warn_once("The pagemap bits 55-60 has changed their meaning!" +- " See the linux/Documentation/vm/pagemap.txt for " +- "details.\n"); } task = get_proc_task(file_inode(file)); -@@ -1227,9 +1225,6 @@ out: +@@ -1322,9 +1319,6 @@ out: static int pagemap_open(struct inode *inode, struct file *file) { @@ -83,10 +86,10 @@ memset(&tmp, 0, sizeof(struct __old_kernel_stat)); tmp.st_dev = old_encode_dev(stat->dev); diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c -index 653cbbd9e7ad..8338a2bbac33 100644 +index 7e7746a42a62..6fb00bbc5eb7 100644 --- a/kernel/sysctl_binary.c +++ b/kernel/sysctl_binary.c -@@ -1348,8 +1348,6 @@ static ssize_t binary_sysctl(const int *name, int nlen, +@@ -1349,8 +1349,6 @@ static ssize_t binary_sysctl(const int *name, int nlen, static void deprecated_sysctl_warning(const int *name, int nlen) { @@ -95,7 +98,7 @@ /* * CTL_KERN/KERN_VERSION is used by older glibc and cannot * ever go away. -@@ -1357,14 +1355,6 @@ static void deprecated_sysctl_warning(const int *name, int nlen) +@@ -1358,14 +1356,6 @@ static void deprecated_sysctl_warning(const int *name, int nlen) if (name[0] == CTL_KERN && name[1] == KERN_VERSION) return; @@ -111,10 +114,10 @@ } diff --git a/mm/backing-dev.c b/mm/backing-dev.c -index 09d9591b7708..0bc4491c642a 100644 +index 0ae0df55000b..f07e8eacafbd 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c -@@ -667,8 +667,6 @@ int pdflush_proc_obsolete(struct ctl_table *table, int write, +@@ -659,8 +659,6 @@ int pdflush_proc_obsolete(struct ctl_table *table, int write, if (copy_to_user(buffer, kbuf, sizeof(kbuf))) return -EFAULT; @@ -124,7 +127,7 @@ *lenp = 2; *ppos += *lenp; diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c -index c35c3f48fc0f..3e605e64c797 100644 +index ca049a7c9287..5052e4cc0c10 100644 --- a/net/ax25/af_ax25.c +++ b/net/ax25/af_ax25.c @@ -1209,9 +1209,6 @@ static int __must_check ax25_connect(struct socket *sock, @@ -152,7 +155,7 @@ res = -EFAULT; break; diff --git a/net/core/sock.c b/net/core/sock.c -index 664ee4295b6f..87366a065687 100644 +index 1c7a33db1314..b9cfe362105e 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -412,14 +412,6 @@ static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen) @@ -171,10 +174,10 @@ #define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c -index 09a22f4f36c9..c9953e5a94b1 100644 +index 682866777d53..3e4b13e39560 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c -@@ -1632,16 +1632,6 @@ static struct notifier_block ndisc_netdev_notifier = { +@@ -1669,16 +1669,6 @@ static struct notifier_block ndisc_netdev_notifier = { static void ndisc_warn_deprecated_sysctl(struct ctl_table *ctl, const char *func, const char *dev_name) { @@ -192,7 +195,7 @@ int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c -index 5b3eae7d4c9a..7973a49ffdf9 100644 +index bd9d31537905..f2fdf02f0a94 100644 --- a/net/netfilter/nf_conntrack_helper.c +++ b/net/netfilter/nf_conntrack_helper.c @@ -212,10 +212,6 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl, @@ -207,10 +210,23 @@ } } diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index fee06b99a4da..a3fdfa90b0e8 100644 +index 2625eccb77d5..22b42bac16b0 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c -@@ -3021,11 +3021,6 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned +@@ -2205,12 +2205,6 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, + if (copy_from_user(&sctp_sk(sk)->subscribe, optval, optlen)) + return -EFAULT; + +- if (sctp_sk(sk)->subscribe.sctp_data_io_event) +- pr_warn_ratelimited(DEPRECATED "%s (pid %d) " +- "Requested SCTP_SNDRCVINFO event.\n" +- "Use SCTP_RCVINFO through SCTP_RECVRCVINFO option instead.\n", +- current->comm, task_pid_nr(current)); +- + /* At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, + * if there is no data to be sent or retransmit, the stack will + * immediately send up this notification. +@@ -3091,11 +3085,6 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int val; if (optlen == sizeof(int)) { @@ -222,7 +238,7 @@ if (copy_from_user(&val, optval, optlen)) return -EFAULT; params.assoc_id = 0; -@@ -3282,11 +3277,6 @@ static int sctp_setsockopt_maxburst(struct sock *sk, +@@ -3352,11 +3341,6 @@ static int sctp_setsockopt_maxburst(struct sock *sk, int assoc_id = 0; if (optlen == sizeof(int)) { @@ -234,7 +250,7 @@ if (copy_from_user(&val, optval, optlen)) return -EFAULT; } else if (optlen == sizeof(struct sctp_assoc_value)) { -@@ -5252,11 +5242,6 @@ static int sctp_getsockopt_maxseg(struct sock *sk, int len, +@@ -5405,11 +5389,6 @@ static int sctp_getsockopt_maxseg(struct sock *sk, int len, struct sctp_association *asoc; if (len == sizeof(int)) { @@ -246,7 +262,7 @@ params.assoc_id = 0; } else if (len >= sizeof(struct sctp_assoc_value)) { len = sizeof(struct sctp_assoc_value); -@@ -5347,11 +5332,6 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len, +@@ -5500,11 +5479,6 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len, struct sctp_association *asoc; if (len == sizeof(int)) { @@ -259,10 +275,10 @@ } else if (len >= sizeof(struct sctp_assoc_value)) { len = sizeof(struct sctp_assoc_value); diff --git a/net/socket.c b/net/socket.c -index abf56b2a14f9..1f02293cb011 100644 +index a2c33a4dc7ba..77029279ace0 100644 --- a/net/socket.c +++ b/net/socket.c -@@ -1263,15 +1263,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, +@@ -1244,15 +1244,8 @@ int __sock_create(struct net *net, int family, int type, int protocol, This uglymoron is moved from INET layer to here to avoid deadlock in module load. */ @@ -279,20 +295,3 @@ err = security_socket_create(family, type, protocol, kern); if (err) -diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index 321697da2863..96b0f00f975d 100644 ---- a/net/sctp/socket.c -+++ b/net/sctp/socket.c -@@ -2205,12 +2205,6 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval, - if (copy_from_user(&sctp_sk(sk)->subscribe, optval, optlen)) - return -EFAULT; - -- if (sctp_sk(sk)->subscribe.sctp_data_io_event) -- pr_warn_ratelimited(DEPRECATED "%s (pid %d) " -- "Requested SCTP_SNDRCVINFO event.\n" -- "Use SCTP_RCVINFO through SCTP_RECVRCVINFO option instead.\n", -- current->comm, task_pid_nr(current)); -- - /* At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT, - * if there is no data to be sent or retransmit, the stack will - * immediately send up this notification. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/syscalls/execve.c new/trinity-20150107/syscalls/execve.c --- old/trinity-20141206/syscalls/execve.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/syscalls/execve.c 2015-01-14 16:12:54.000000000 +0100 @@ -19,6 +19,7 @@ #include "syscall.h" #include "trinity.h" // __unused__ #include "utils.h" +#include "compat.h" static unsigned int argvcount; static unsigned int envpcount; @@ -53,23 +54,45 @@ rec->a3 = (unsigned long) gen_ptrs_to_crap(envpcount); } +static void sanitise_execveat(struct syscallrecord *rec) +{ + /* we don't want to block if something tries to read from stdin */ + fclose(stdin); + + /* Fabricate argv */ + argvcount = rand() % 32; + rec->a3 = (unsigned long) gen_ptrs_to_crap(argvcount); + + /* Fabricate envp */ + envpcount = rand() % 32; + rec->a4 = (unsigned long) gen_ptrs_to_crap(envpcount); +} + /* if execve succeeds, we'll never get back here, so this only * has to worry about the case where execve returned a failure. */ -static void post_execve(struct syscallrecord *rec) + +static void free_execve_ptrs(void **argv, void **envp) { - void **ptr; unsigned int i; - ptr = (void **) rec->a2; for (i = 0; i < argvcount; i++) - free(ptr[i]); - free(ptr); + free(argv[i]); + free(argv); - ptr = (void **) rec->a3; for (i = 0; i < envpcount; i++) - free(ptr[i]); - free(ptr); + free(envp[i]); + free(envp); +} + +static void post_execve(struct syscallrecord *rec) +{ + free_execve_ptrs((void **) rec->a2, (void **) rec->a3); +} + +static void post_execveat(struct syscallrecord *rec) +{ + free_execve_ptrs((void **) rec->a3, (void **) rec->a4); } struct syscallentry syscall_execve = { @@ -86,6 +109,38 @@ .group = GROUP_VFS, .flags = EXTRA_FORK, .errnos = { + .num = 17, + .values = { + E2BIG, EACCES, EFAULT, EINVAL, EIO, EISDIR, ELIBBAD, ELOOP, + EMFILE, ENOENT, ENOEXEC, ENOMEM, ENOTDIR, EPERM, ETXTBSY, + /* currently undocumented in man page. */ + ENAMETOOLONG, ENXIO, + }, + }, +}; + +struct syscallentry syscall_execveat = { + .name = "execveat", + .num_args = 5, + .arg1name = "fd", + .arg1type = ARG_FD, + .arg2name = "name", + .arg2type = ARG_PATHNAME, + .arg3name = "argv", + .arg3type = ARG_ADDRESS, + .arg4name = "envp", + .arg4type = ARG_ADDRESS, + .arg5name = "flags", + .arg5type = ARG_LIST, + .arg5list = { + .num = 2, + .values = { AT_EMPTY_PATH, AT_SYMLINK_NOFOLLOW }, + }, + .sanitise = sanitise_execveat, + .post = post_execveat, + .group = GROUP_VFS, + .flags = EXTRA_FORK, + .errnos = { .num = 17, .values = { E2BIG, EACCES, EFAULT, EINVAL, EIO, EISDIR, ELIBBAD, ELOOP, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/syscalls/syscalls.h new/trinity-20150107/syscalls/syscalls.h --- old/trinity-20141206/syscalls/syscalls.h 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/syscalls/syscalls.h 2015-01-14 16:12:54.000000000 +0100 @@ -375,5 +375,6 @@ extern struct syscallentry syscall_memfd_create; extern struct syscallentry syscall_kexec_file_load; extern struct syscallentry syscall_bpf; +extern struct syscallentry syscall_execveat; unsigned int random_fcntl_setfl_flags(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-20141206/trinity.c new/trinity-20150107/trinity.c --- old/trinity-20141206/trinity.c 2014-12-13 14:38:01.000000000 +0100 +++ new/trinity-20150107/trinity.c 2015-01-14 16:12:54.000000000 +0100 @@ -62,7 +62,7 @@ pid_t pid; const char taskname[13]="trinity-main"; - outputstd("Trinity " VERSION " Dave Jones <da...@redhat.com>\n"); + outputstd("Trinity " VERSION " Dave Jones <da...@codemonkey.org.uk>\n"); progname = argv[0]; -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org