* Slightly updated documentation.
This commit is contained in:
parent
1b5ba510be
commit
cd34753adc
24
doc/zzuf.1
24
doc/zzuf.1
@ -10,15 +10,18 @@ zzuf \- multiple purpose fuzzer
|
|||||||
.I ratio
|
.I ratio
|
||||||
] [
|
] [
|
||||||
.B \-s
|
.B \-s
|
||||||
.I seed[:stop]
|
.I seed
|
||||||
] [
|
|
|
||||||
.B \-F
|
.B \-s
|
||||||
.I children
|
.I start:stop
|
||||||
]
|
]
|
||||||
.PD 0
|
.PD 0
|
||||||
.IP
|
.IP
|
||||||
.PD
|
.PD
|
||||||
[
|
[
|
||||||
|
.B \-F
|
||||||
|
.I children
|
||||||
|
] [
|
||||||
.B \-B
|
.B \-B
|
||||||
.I bytes
|
.I bytes
|
||||||
] [
|
] [
|
||||||
@ -185,6 +188,17 @@ to reproduce the same behaviour without using
|
|||||||
|
|
||||||
.B % vlc fuzzy-movie.avi
|
.B % vlc fuzzy-movie.avi
|
||||||
|
|
||||||
|
.fi
|
||||||
|
Fuzz
|
||||||
|
.BR mplayer 's
|
||||||
|
input with seeds 0 to 9999, launching up to 3 simultaneous child processes
|
||||||
|
and killing
|
||||||
|
.BR mplayer
|
||||||
|
if it takes more than one minute to read the file:
|
||||||
|
.fn
|
||||||
|
|
||||||
|
.B % zzuf -q -s 0:10000 -F 3 -T 60 -r 0.02 -i movie.avi mplayer movie.avi -- -benchmark -vo null -fps 1000
|
||||||
|
|
||||||
.fi
|
.fi
|
||||||
.RI
|
.RI
|
||||||
.SH BUGS
|
.SH BUGS
|
||||||
@ -194,7 +208,7 @@ Only the most common file operations are implemented as of now:
|
|||||||
.BR fopen (),
|
.BR fopen (),
|
||||||
.BR fseek (),
|
.BR fseek (),
|
||||||
etc. One important unimplemented function is
|
etc. One important unimplemented function is
|
||||||
.BR fopen ().
|
.BR fscanf ().
|
||||||
|
|
||||||
Network fuzzing is not implemented. It is not yet possible to insert or
|
Network fuzzing is not implemented. It is not yet possible to insert or
|
||||||
drop bytes from the input, to fuzz according to the file format, or to do
|
drop bytes from the input, to fuzz according to the file format, or to do
|
||||||
|
|||||||
14
src/zzuf.c
14
src/zzuf.c
@ -206,7 +206,7 @@ int main(int argc, char *argv[])
|
|||||||
if(child_list[i].status == STATUS_RUNNING
|
if(child_list[i].status == STATUS_RUNNING
|
||||||
&& maxbytes >= 0 && child_list[i].bytes > maxbytes)
|
&& maxbytes >= 0 && child_list[i].bytes > maxbytes)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%i: exceeded byte count, sending SIGTERM\n",
|
fprintf(stderr, "seed %i: data exceeded, sending SIGTERM\n",
|
||||||
child_list[i].seed);
|
child_list[i].seed);
|
||||||
kill(child_list[i].pid, SIGTERM);
|
kill(child_list[i].pid, SIGTERM);
|
||||||
child_list[i].date = now;
|
child_list[i].date = now;
|
||||||
@ -217,7 +217,7 @@ int main(int argc, char *argv[])
|
|||||||
&& maxtime >= 0.0
|
&& maxtime >= 0.0
|
||||||
&& difftime(now, child_list[i].date) > maxtime)
|
&& difftime(now, child_list[i].date) > maxtime)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%i: time exceeded, sending SIGTERM\n",
|
fprintf(stderr, "seed %i: time exceeded, sending SIGTERM\n",
|
||||||
child_list[i].seed);
|
child_list[i].seed);
|
||||||
kill(child_list[i].pid, SIGTERM);
|
kill(child_list[i].pid, SIGTERM);
|
||||||
child_list[i].date = now;
|
child_list[i].date = now;
|
||||||
@ -231,7 +231,7 @@ int main(int argc, char *argv[])
|
|||||||
if(child_list[i].status == STATUS_SIGTERM
|
if(child_list[i].status == STATUS_SIGTERM
|
||||||
&& difftime(now, child_list[i].date) > 2.0)
|
&& difftime(now, child_list[i].date) > 2.0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%i: not responding, sending SIGKILL\n",
|
fprintf(stderr, "seed %i: not responding, sending SIGKILL\n",
|
||||||
child_list[i].seed);
|
child_list[i].seed);
|
||||||
kill(child_list[i].pid, SIGKILL);
|
kill(child_list[i].pid, SIGKILL);
|
||||||
child_list[i].status = STATUS_SIGKILL;
|
child_list[i].status = STATUS_SIGKILL;
|
||||||
@ -254,10 +254,10 @@ int main(int argc, char *argv[])
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(WIFEXITED(status) && WEXITSTATUS(status))
|
if(WIFEXITED(status) && WEXITSTATUS(status))
|
||||||
fprintf(stderr, "%i: exit %i\n",
|
fprintf(stderr, "seed %i: exit %i\n",
|
||||||
child_list[i].seed, WEXITSTATUS(status));
|
child_list[i].seed, WEXITSTATUS(status));
|
||||||
else if(WIFSIGNALED(status))
|
else if(WIFSIGNALED(status))
|
||||||
fprintf(stderr, "%i: signal %i\n",
|
fprintf(stderr, "seed %i: signal %i\n",
|
||||||
child_list[i].seed, WTERMSIG(status));
|
child_list[i].seed, WTERMSIG(status));
|
||||||
|
|
||||||
if(child_list[i].outfd >= 0)
|
if(child_list[i].outfd >= 0)
|
||||||
@ -425,8 +425,8 @@ static void version(void)
|
|||||||
#if defined(HAVE_GETOPT_H)
|
#if defined(HAVE_GETOPT_H)
|
||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
printf("Usage: zzuf [ -vqdh ] [ -r ratio ] [ -s seed[:stop] ] [ -F children ]\n");
|
printf("Usage: zzuf [ -vqdh ] [ -r ratio ] [ -s seed | -s start:stop]\n");
|
||||||
printf(" [ -B bytes ] [ -T seconds ]\n");
|
printf(" [ -F children ] [ -B bytes ] [ -T seconds ]\n");
|
||||||
printf(" [ -i include ] [ -e exclude ] COMMAND [ARGS]...\n");
|
printf(" [ -i include ] [ -e exclude ] COMMAND [ARGS]...\n");
|
||||||
printf("Run COMMAND and randomly fuzz its input files.\n");
|
printf("Run COMMAND and randomly fuzz its input files.\n");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user