Start some fuzzing test

You can run the tests over the corpus with a "regular" build, then
$ fuzzing/fuzz-input ../fuzzing/IN/*

Or building with fuzzing enabled, and running:
$ CFLAGS="-fsanitize=fuzzer" CC=clang CXX=clang++ meson -Db_lundef=false
$ fuzzing/fuzz-input  ../fuzzing/IN

I have an initial corpus which was generated by running fuzz-input for
a few hours starting with qemu.pkt, which is the first packet sent by
qemu.  Sadly, it only covers 25%... I tried to increase the coverage
manually, see for example tftp-get-blah.pkt, but that's not so simple,
as multiple packets may be required to setup a session etc.

Neverthess, the fuzzing already found a few issues, so it might be
worth to add it in this current form.

fuzzing/oss-fuzz.sh is used by oss-fuzz, for Google fuzzing.
(see documentation if you want to reproduce the build locally)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
10 files changed
tree: 49fb432bc2b89dfb1db218a74c834efa81051264
  1. build-aux/
  2. fuzzing/
  3. src/
  4. test/
  5. .clang-format
  6. .gitignore
  7. .gitlab-ci.yml
  8. .gitpublish
  9. CHANGELOG.md
  10. COPYRIGHT
  11. meson.build
  12. meson_options.txt
  13. README.md
README.md

libslirp

libslirp is a user-mode networking library used by virtual machines, containers or various tools.

Getting Started

Prerequisites

A C compiler, meson and glib2 development libraries.

(see also .gitlab-ci.yml DEPS variable for the list of dependencies on Fedora)

Building

You may build and install the shared library with meson:

meson build
ninja -C build install

And configure QEMU with --enable-slirp=system to link against it.

(QEMU may build with the submodule static library using --enable-slirp=git)

Testing

Unfortunately, there are no automated tests available.

You may run QEMU -net user linked with your development version.

Contributing

Feel free to open issues on the project issues page.

You may clone the gitlab project and create a merge request.

Contributing with gitlab allows gitlab workflow, tracking issues, running CI etc.

Alternatively, you may send patches to slirp@lists.freedesktop.org mailing list.

Versioning

We intend to use libtool's versioning for the shared libraries and use SemVer for project versions.

For the versions available, see the tags on this repository.

License

See the COPYRIGHT file for details.