ref: 3e1ae0620401232b436c4afe2bb4ee75a6880cf3
parent: 0ffcce55b2dc0c83c1830b26ef6c5a936b507497
author: Steven Sleder <[email protected]>
date: Mon Nov 5 17:12:39 EST 2018
Basic outline for input and mutation
--- a/input.c
+++ b/input.c
@@ -1,6 +1,7 @@
#include <u.h>
#include <libc.h>
#include "fuzz.h"
+#include "mutate.h"
// Procedurally generate input to syscall
void*
@@ -7,5 +8,75 @@
mkinput(caller sc)
{
// TODO
+ switch(sc.call) {
+ case sc_exits : // _exits(char*);
+ case sc_abort : // abort(void);
+ case sc_access : // access(char* : int);
+ case sc_alarm : // alarm(ulong);
+ case sc_await : // await(char* : int);
+ case sc_bind : // bind(char* : char* : int);
+ case sc_brk : // brk(void*);
+ case sc_chdir : // chdir(char*);
+ case sc_close : // close(int);
+ case sc_create : // create(char* : int : ulong);
+ case sc_dup : // dup(int : int);
+ case sc_errstr : // errstr(char* : uint);
+ case sc_exec : // exec(char* : char*[]);
+ case sc_execl : // execl(char* : ...);
+ case sc_fork : // fork(void);
+ case sc_rfork : // rfork(int);
+ case sc_fauth : // fauth(int : char*);
+ case sc_fstat : // fstat(int : uchar* : int);
+ case sc_fwstat : // fwstat(int : uchar* : int);
+ case sc_fversion : // fversion(int : int : char* : int);
+ case sc_mount : // mount(int : int : char* : int : char*);
+ case sc_unmount : // unmount(char* : char*);
+ case sc_noted : // noted(int);
+ case sc_notify : // notify(void(*)(void* : char*));
+ case sc_open : // open(char* : int);
+ case sc_fd2path : // fd2path(int : char* : int);
+ case sc_pipe : // pipe(int*);
+ case sc_pread : // pread(int : void* : long : vlong);
+ case sc_preadv : // preadv(int : IOchunk* : int : vlong);
+ case sc_pwrite : // pwrite(int : void* : long : vlong);
+ case sc_pwritev : // pwritev(int : IOchunk* : int : vlong);
+ case sc_read : // read(int : void* : long);
+ case sc_readn : // readn(int : void* : long);
+ case sc_readv : // readv(int : IOchunk* : int);
+ case sc_remove : // remove(char*);
+ case sc_sbrk : // sbrk(ulong);
+ case sc_oseek : // oseek(int : long : int);
+ case sc_seek : // seek(int : vlong : int);
+ case sc_segattach : // segattach(int : char* : void* : ulong);
+ case sc_segbrk : // segbrk(void* : void*);
+ case sc_segdetach : // segdetach(void*);
+ case sc_segflush : // segflush(void* : ulong);
+ case sc_segfree : // segfree(void* : ulong);
+ case sc_semacquire : // semacquire(long* : int);
+ case sc_semrelease : // semrelease(long* : long);
+ case sc_sleep : // sleep(long);
+ case sc_stat : // stat(char* : uchar* : int);
+ case sc_tsemacquire : // tsemacquire(long* : ulong);
+ case sc_wait : // wait(void);
+ case sc_waitpid : // waitpid(void);
+ case sc_write : // write(int : void* : long);
+ case sc_writev : // writev(int : IOchunk* : int);
+ case sc_wstat : // wstat(char* : uchar* : int);
+ case sc_rendezvous : // rendezvous(void* : void*);
+ case sc_dirstat : // dirstat(char*);
+ case sc_dirfstat : // dirfstat(int);
+ case sc_dirwstat : // dirwstat(char* : Dir*);
+ case sc_dirfwstat : // dirfwstat(int : Dir*);
+ case sc_dirread : // dirread(int : Dir**);
+ case sc_nulldir : // nulldir(Dir*);
+ case sc_dirreadall : // dirreadall(int : Dir**);
+ case sc_getpid : // getpid(void);
+ case sc_getppid : // getppid(void);
+ case sc_rerrstr : // rerrstr(char* : uint);
+ case sc_sysname : // sysname(void);
+ case sc_werrstr : // werrstr(char* : ...);
+ default :
+ #PANIC!
+ }
return nil;
}
--- /dev/null
+++ b/mutate.h
@@ -1,0 +1,25 @@
+void mut_int();
+
+void mut_uint();
+
+void mut_charstar();
+
+void mut_ucharstar();
+
+void mut_charstar_arr();
+
+void mut_long();
+
+void mut_longstar();
+
+void mut_ulong();
+
+void mut_vlong();
+
+void mut_voidstar();
+
+void mut_IOchunkstar();
+
+void mut_dirstar();
+
+void mut_dirstar_star();