Hello community, here is the log from the commit of package trinity for openSUSE:Factory checked in at 2017-01-23 11:35:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-12-29 22:51:07.438923953 +0100 +++ /work/SRC/openSUSE:Factory/.trinity.new/trinity.changes 2017-01-23 11:35:49.323218478 +0100 @@ -1,0 +2,9 @@ +Sun Jan 08 09:51:43 UTC 2017 - [email protected] + +- Update to version 1.7+git.20170107: + * check that the mprotect succeeded before writing to page. + * optimize the case where we're dirtying a whole mapping. + * protocol is always unsigned. + * clear out any old state left in the postbuffer before we do a syscall. + +------------------------------------------------------------------- Old: ---- trinity-1.7+git.20161222.tar.xz New: ---- trinity-1.7+git.20170107.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ trinity.spec ++++++ --- /var/tmp/diff_new_pack.fiGTfg/_old 2017-01-23 11:35:49.891137940 +0100 +++ /var/tmp/diff_new_pack.fiGTfg/_new 2017-01-23 11:35:49.895137373 +0100 @@ -1,7 +1,7 @@ # # spec file for package trinity # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,9 +16,9 @@ # -%define version_unconverted 1.7+git.20161222 +%define version_unconverted 1.7+git.20170107 Name: trinity -Version: 1.7+git.20161222 +Version: 1.7+git.20170107 Release: 0 Summary: A Linux System call fuzz tester License: GPL-2.0 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.fiGTfg/_old 2017-01-23 11:35:49.935131701 +0100 +++ /var/tmp/diff_new_pack.fiGTfg/_new 2017-01-23 11:35:49.939131134 +0100 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/kernelslacker/trinity</param> - <param name="changesrevision">7b0c4fea9d676996d942cfe4fd12bd2dd9d217c2</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">14f78c74d14ce5a675d4598d7e25f6790dbfd3ee</param></service></servicedata> \ No newline at end of file ++++++ trinity-1.7+git.20161222.tar.xz -> trinity-1.7+git.20170107.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-1.7+git.20161222/childops/random-syscall.c new/trinity-1.7+git.20170107/childops/random-syscall.c --- old/trinity-1.7+git.20161222/childops/random-syscall.c 2016-12-22 22:38:48.000000000 +0100 +++ new/trinity-1.7+git.20170107/childops/random-syscall.c 2017-01-08 04:45:22.000000000 +0100 @@ -183,8 +183,9 @@ if (set_syscall_nr(rec) == FAIL) return FAIL; - /* Generate arguments, print them out */ + memset(rec->postbuffer, 0, POSTBUFFER_LEN); + /* Generate arguments, print them out */ generate_syscall_args(rec); output_syscall_prefix(rec); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trinity-1.7+git.20161222/mm/fault-write.c new/trinity-1.7+git.20170107/mm/fault-write.c --- old/trinity-1.7+git.20161222/mm/fault-write.c 2016-12-22 22:38:48.000000000 +0100 +++ new/trinity-1.7+git.20170107/mm/fault-write.c 2017-01-08 04:45:22.000000000 +0100 @@ -9,10 +9,26 @@ #include "sanitise.h" // get_address #include "utils.h" -static void mark_page_rw(struct map *map, void *page) +static bool mark_map_rw(struct map *map) { - mprotect(page, page_size, PROT_READ|PROT_WRITE); + int ret; + ret = mprotect(map->ptr, map->size, PROT_READ|PROT_WRITE); + if (ret < 0) + return FALSE; + + map->prot = PROT_READ|PROT_WRITE; + return TRUE; +} + +static bool mark_page_rw(struct map *map, void *page) +{ + int ret; + ret = mprotect(page, page_size, PROT_READ|PROT_WRITE); + if (ret < 0) + return FALSE; + map->prot = PROT_READ|PROT_WRITE; + return TRUE; } static unsigned int nr_pages(struct map *map) @@ -25,19 +41,21 @@ char *p = map->ptr; unsigned long offset = (rnd() % map->size) & PAGE_MASK; - mark_page_rw(map, p + offset); - p[offset] = rnd(); + if (mark_page_rw(map, p + offset) == TRUE) + p[offset] = rnd(); } static void dirty_whole_mapping(struct map *map) { unsigned int i, nr; + if (mark_map_rw(map) == FALSE) + return; + nr = nr_pages(map); for (i = 0; i < nr; i++) { char *p = map->ptr + (i * page_size); - mark_page_rw(map, p); *p = rnd(); } } @@ -52,8 +70,8 @@ for (i = first; i < nr; i+=2) { char *p = map->ptr + (i * page_size); - mark_page_rw(map, p); - *p = rnd(); + if (mark_page_rw(map, p) == TRUE) + *p = rnd(); } } @@ -65,8 +83,8 @@ for (i = nr; i > 0; i--) { char *p = map->ptr + (i * page_size); - mark_page_rw(map, p); - *p = rnd(); + if (mark_page_rw(map, p) == TRUE) + *p = rnd(); } } @@ -80,8 +98,8 @@ for (i = 0; i < nr; i++) { off_t offset = (rnd() % nr) * page_size; char *p = map->ptr + offset; - mark_page_rw(map, p); - *p = rnd(); + if (mark_page_rw(map, p) == TRUE) + *p = rnd(); } } @@ -91,8 +109,8 @@ { char *p = map->ptr; - mark_page_rw(map, map->ptr); - generate_random_page(p); + if (mark_page_rw(map, map->ptr) == TRUE) + generate_random_page(p); } /* Dirty the last page in a mapping @@ -102,8 +120,8 @@ { char *p = map->ptr + map->size - page_size; - mark_page_rw(map, p); - memset((void *) p, 'A', page_size); + if (mark_page_rw(map, p) == TRUE) + 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-1.7+git.20161222/net/proto-ipv4.c new/trinity-1.7+git.20170107/net/proto-ipv4.c --- old/trinity-1.7+git.20161222/net/proto-ipv4.c 2016-12-22 22:38:48.000000000 +0100 +++ new/trinity-1.7+git.20170107/net/proto-ipv4.c 2017-01-08 04:45:22.000000000 +0100 @@ -299,7 +299,7 @@ static void call_inet_sso_ptr(struct sockopt *so, struct socket_triplet *triplet) { - int proto = triplet->protocol; + unsigned int proto = triplet->protocol; /* we might have gotten here from a non-IP socket, (see setsockopt.c * Make sure we don't run past the end of the array above
