Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_load.py: 39%

31 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 07:03 +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# Copyright 2023 Google LLC 

13# 

14# Licensed under the Apache License, Version 2.0 (the "License"); 

15# you may not use this file except in compliance with the License. 

16# You may obtain a copy of the License at 

17# 

18# http://www.apache.org/licenses/LICENSE-2.0 

19# 

20# Unless required by applicable law or agreed to in writing, software 

21# distributed under the License is distributed on an "AS IS" BASIS, 

22# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

23# See the License for the specific language governing permissions and 

24# limitations under the License. 

25# 

26################################################################################ 

27 

28import sys 

29import atheris 

30import io 

31 

32import toml 

33from toml import ordered as toml_ordered 

34 

35def TestOneInput(data): 

36 fdp = atheris.FuzzedDataProvider(data) 

37 

38 # Pick from a random set of decoders 

39 DECODERS = [ 

40 None, 

41 toml_ordered.TomlOrderedDecoder(), 

42 toml.TomlPreserveCommentDecoder() 

43 ] 

44 

45 try: 

46 f = io.StringIO(fdp.ConsumeString(sys.maxsize)) 

47 result = toml.decoder.load(f, decoder=fdp.PickValueInList(DECODERS)) 

48 except (toml.TomlDecodeError, IndexError) as e: 

49 if isinstance(e, IndexError): 

50 if "IndexError: list index out of range" in str(e) or "IndexError: string index out of range" in str(e): 

51 pass 

52 else: 

53 raise e 

54 pass 

55 

56 

57def main(): 

58 atheris.instrument_all() 

59 atheris.Setup(sys.argv, TestOneInput) 

60 atheris.Fuzz() 

61 

62 

63if __name__ == "__main__": 

64 main()