1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
5 <title>Testing Guidelines</title>
6 <meta name="GENERATOR" content=
7 "Modular DocBook HTML Stylesheet Version 1.79">
8 <link rel="HOME" title="Privoxy Developer Manual" href="index.html">
9 <link rel="PREVIOUS" title="Coding Guidelines" href="coding.html">
10 <link rel="NEXT" title="Releasing a New Version" href="newrelease.html">
11 <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
12 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
14 <body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
15 "#840084" alink="#0000FF">
16 <div class="NAVHEADER">
17 <table summary="Header navigation table" width="100%" border="0"
18 cellpadding="0" cellspacing="0">
20 <th colspan="3" align="center">Privoxy Developer Manual</th>
23 <td width="10%" align="left" valign="bottom"><a href="coding.html"
24 accesskey="P">Prev</a></td>
25 <td width="80%" align="center" valign="bottom"></td>
26 <td width="10%" align="right" valign="bottom"><a href=
27 "newrelease.html" accesskey="N">Next</a></td>
30 <hr align="left" width="100%">
33 <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing
37 <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1.
38 Testplan for releases</a></h2>
39 <p>Explain release numbers. major, minor. developer releases. etc.</p>
42 <p>Remove any existing rpm with rpm -e</p>
45 <p>Remove any file that was left over. This includes (but is not
49 <p>/var/log/privoxy</p>
55 <p>/usr/sbin/privoxy</p>
58 <p>/etc/init.d/privoxy</p>
61 <p>/usr/doc/privoxy*</p>
66 <p>Install the rpm. Any error messages?</p>
69 <p>start,stop,status <span class="APPLICATION">Privoxy</span> with
70 the specific script (e.g. /etc/rc.d/init/privoxy stop). Reboot your
71 machine. Does autostart work?</p>
74 <p>Start browsing. Does <span class="APPLICATION">Privoxy</span>
75 work? Logfile written?</p>
78 <p>Remove the rpm. Any error messages? All files removed?</p>
83 <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.2. Fuzzing
85 <p>To make fuzzing more convenient, Privoxy can be configured with
86 --enable-fuzz which will result in the --fuzz option becoming
88 <p>Example (tested on ElectroBSD):</p>
89 <table border="0" bgcolor="#E0E0E0" width="100%">
92 <pre class="PROGRAMLISTING">
93 # Compile Privoxy with instrumentation for afl
95 $ export CFLAGS="-fsanitize=address -ggdb"
96 $ export CPPFLAGS=-I/usr/local/include/
97 $ export LDFLAGS="-fsanitize=address -L/usr/local/lib"
98 $ export AFL_USE_ASAN=1
100 $ ./configure --with-debug --enable-extended-host-patterns --enable-accept-filter --enable-no-gifs --enable-compression --enable-strptime-sanity-checks --enable-external-filters --enable-fuzz
103 Privoxy version 3.0.24 (http://www.privoxy.org/)
104 Usage: ./privoxy [--config-test] [--chroot] [--help] [--no-daemon] [--pidfile pidfile] [--pre-chroot-nslookup hostname] [--user user[.group]] [--version] [configfile]
105 ./privoxy --fuzz fuzz-mode ./path/to/fuzzed/input [--stfu]
107 Supported fuzz modes and the expected input:
108 action: Text to parse as action file.
109 client-request: Client request to parse. Currently incomplete
110 client-header: Client header to parse.
111 chunked-transfer-encoding: Chunk-encoded data to dechunk.
112 deflate: deflate-compressed data to decompress.
113 filter: Text to parse as filter file.
114 gif: gif to deanimate.
115 gzip: gzip-compressed data to decompress.
116 pcrs-substitute: A pcrs-substitute to compile. Not a whole pcrs job! Example: Bla $1 bla C $3 blah.
117 server-header: Server header to parse.
118 server-response: Server response to parse.
120 The following fuzz modes read data from stdin if the 'file' is '-'
123 chunked-transfer-encoding
133 $ export ASAN_OPTIONS='abort_on_error=1'
135 $ echo '$1 bla fasel $2' > input/pcrs
136 $ afl-fuzz -i input -o output -m none ~/git/privoxy/privoxy --fuzz pcrs-substitute - --stfu
138 $ cat >input/pcrs.txt
140 s@(.{1})[432](\d+)@$1$2$hostname@UgisT
142 $ afl-fuzz -i input/ -o output/ -f bla.filter -m none privoxy --fuzz filter bla.filter --stfu</pre>
148 <div class="NAVFOOTER">
149 <hr align="left" width="100%">
150 <table summary="Footer navigation table" width="100%" border="0"
151 cellpadding="0" cellspacing="0">
153 <td width="33%" align="left" valign="top"><a href="coding.html"
154 accesskey="P">Prev</a></td>
155 <td width="34%" align="center" valign="top"><a href="index.html"
156 accesskey="H">Home</a></td>
157 <td width="33%" align="right" valign="top"><a href="newrelease.html"
158 accesskey="N">Next</a></td>
161 <td width="33%" align="left" valign="top">Coding Guidelines</td>
162 <td width="34%" align="center" valign="top"> </td>
163 <td width="33%" align="right" valign="top">Releasing a New