Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_file_extended.py: 36%
33 statements
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-10 06:15 +0000
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-10 06:15 +0000
1###### Coverage stub
2import atexit
3import coverage
4cov = coverage.coverage(data_file='.coverage', cover_pylib=True)
5cov.start()
6# Register an exist handler that will print coverage
7def exit_handler():
8 cov.stop()
9 cov.save()
10atexit.register(exit_handler)
11####### End of coverage stub
12#!/usr/bin/python3
14# Copyright 2023 Google LLC
15#
16# Licensed under the Apache License, Version 2.0 (the "License");
17# you may not use this file except in compliance with the License.
18# You may obtain a copy of the License at
19#
20# http://www.apache.org/licenses/LICENSE-2.0
21#
22# Unless required by applicable law or agreed to in writing, software
23# distributed under the License is distributed on an "AS IS" BASIS,
24# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25# See the License for the specific language governing permissions and
26# limitations under the License.
27#
28##########################################################################
29"""Fuzzing arbitrary file loading and arbitrary file operations on the
30loaded file, in the event of a successful load."""
31import sys
32import atheris
33import tables
36def TestOneInput(data):
37 fdp = atheris.FuzzedDataProvider(data)
38 fname = '/tmp/fuzzfile.h5'
39 with open(fname, 'wb') as f:
40 f.write(fdp.ConsumeBytes(fdp.ConsumeIntInRange(1, 16384)))
41 try:
42 table_file = tables.open_file(fname)
43 except tables.exceptions.HDF5ExtError:
44 return
46 try:
47 table_file.create_group(
48 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)),
49 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)))
50 except tables.exceptions.NodeError:
51 return
53 table_file.create_path(
54 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)))
55 table_file.create_tabe(
56 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)),
57 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)))
58 table_file.create_array(
59 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)),
60 fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(2, 24)))
63def main():
64 atheris.instrument_all()
65 atheris.Setup(sys.argv, TestOneInput)
66 atheris.Fuzz()
69if __name__ == "__main__":
70 main()