73bdbb84ec
image-fuzzer: Run using python3
...
image-fuzzer is now supposed to be ready to run using Python 3.
Remove the __future__ imports and change the interpreter line to
"#!/usr/bin/env python3".
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-10-ehabkost@redhat.com
Message-Id: <20191016192430.25098-10-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
58b818d5bd
image-fuzzer: Encode file name and file format to bytes
...
Callers of create_image() will pass strings as arguments, but the
Image class will expect bytes objects to be provided. Encode
them inside create_image().
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-9-ehabkost@redhat.com
Message-Id: <20191016192430.25098-9-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
ee1fde71a3
image-fuzzer: Use bytes constant for field values
...
Field values are supposed to be bytes objects, not unicode
strings. Change two constants that were declared as strings.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-8-ehabkost@redhat.com
Message-Id: <20191016192430.25098-8-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
7185845197
image-fuzzer: Return bytes objects on string fuzzing functions
...
No caller of fuzzer functions is interested in unicode string values,
so replace them with bytes sequences.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-7-ehabkost@redhat.com
Message-Id: <20191016192430.25098-7-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
c439143b7f
image-fuzzer: Use %r for all fiels at Field.__repr__()
...
This makes the formatting code simpler, and safer if we change
the type of self.value from str to bytes.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-6-ehabkost@redhat.com
Message-Id: <20191016192430.25098-6-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
d974451c5b
image-fuzzer: Explicitly use integer division operator
...
Most of the division expressions in image-fuzzer assume integer
division. Use the // operator to keep the same behavior when we
move to Python 3.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-4-ehabkost@redhat.com
Message-Id: <20191016192430.25098-4-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
c314e50b8a
image-fuzzer: Write bytes instead of string to image file
...
This is necessary for Python 3 compatibility.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-3-ehabkost@redhat.com
Message-Id: <20191016192430.25098-3-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
60d3af55da
image-fuzzer: Open image files in binary mode
...
This probably never caused problems because on Linux there's no
actual newline conversion happening, but on Python 3 the
binary/text distinction is stronger and we must explicitly open
the image file in binary mode.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Reviewed-by: John Snow <jsnow@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20191016192430.25098-2-ehabkost@redhat.com
Message-Id: <20191016192430.25098-2-ehabkost@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-11-05 16:35:06 +01:00
8d2860cb91
python: futurize -f lib2to3.fixes.fix_reduce
...
Handle the move of reduce() to functools.reduce().
This is necessary for Python 3 compatibility.
Done using:
$ py=$( (g grep -l -E '^#!.*python';find -name '*.py' -printf '%P\n';) | \
sort -u | grep -v README.sh4)
$ futurize -w -f lib2to3.fixes.fix_reduce $py
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Message-Id: <20180608122952.2009-7-ehabkost@redhat.com >
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
2018-06-08 14:39:24 -03:00
068cf7a44c
python: futurize -f libfuturize.fixes.fix_absolute_import
...
Make implicit relative imports explicit and add "from __future__ import
absolute_import" at the top of each relevant module.
This is necessary for Python 3 compatibility.
Done using:
$ py=$( (g grep -l -E '^#!.*python';find -name '*.py' -printf '%P\n';) | \
sort -u | grep -v README.sh4)
$ futurize -w -f libfuturize.fixes.fix_absolute_import $py
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
Message-Id: <20180608122952.2009-3-ehabkost@redhat.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
2018-06-08 14:39:24 -03:00
1e8fd8d44d
layout: Add generators for refcount table and blocks
...
Refcount structures are placed in clusters randomly selected from all
unallocated host clusters.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Maria Kustova <maria.k@catit.be >
Reviewed-by: Fam Zheng <famz@redhat.com >
Message-id: 7e2f38608db6fba2da53997390b19400d445c45d.1408450493.git.maria.k@catit.be
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-09-22 11:39:37 +01:00
2e5be6b77e
fuzz: Add fuzzing functions for entries of refcount table and blocks
...
Reviewed-by: Fam Zheng <famz@redhat.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Maria Kustova <maria.k@catit.be >
Message-id: c9f4027b6f401c67e9d18f94aed29be445e81d48.1408450493.git.maria.k@catit.be
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-09-22 11:39:36 +01:00
407ba0844d
image-fuzzer: Trivial readability and formatting improvements
...
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-09-22 11:39:30 +01:00
94c83a24c1
image-fuzzer: Reduce number of generator functions in __init__
...
Some issues can be found only when a fuzzed image has a partial structure,
e.g. has L1/L2 tables but no refcount ones. Generation of an entirely
defined image limits these cases. Now the Image constructor creates only
a header and a backing file name (if any), other image elements are generated
in the 'create_image' API.
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00
38eb193b8b
image-fuzzer: Add generators of L1/L2 tables
...
Entries in L1/L2 entries are based on a portion of random guest clusters.
L2 entries contain offsets to host image clusters filled with random data.
Clusters for L1/L2 tables and guest data are selected randomly.
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00
eeadd92487
image-fuzzer: Add fuzzing functions for L1/L2 table entries
...
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00
071e649194
image-fuzzer: Public API for image-fuzzer/runner/runner.py
...
__init__.py provides the public API required by the test runner
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00
e123232331
image-fuzzer: Generator of fuzzed qcow2 images
...
The layout submodule of the qcow2 package creates a random valid image,
randomly selects some amount of its fields, fuzzes them and write the fuzzed
image to the file. Fuzzing process can be controlled by an external
configuration.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00
6d5e9372f6
image-fuzzer: Fuzzing functions for qcow2 images
...
The fuzz submodule of the qcow2 image generator contains fuzzing functions for
image fields.
Each fuzzing function contains a list of constraints and a call of a helper
function that randomly selects a fuzzed value satisfied to one of constraints.
For now constraints include only known as invalid or potentially dangerous
values. But after investigation of code coverage by fuzz tests they will be
expanded by heuristic values based on inner checks and flows of a program
under test.
Now fuzzing of a header, header extensions and a backing file name is
supported.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Maria Kustova <maria.k@catit.be >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2014-08-15 18:03:14 +01:00