Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/defusedxml/expatreader.py: 38%

31 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# defusedxml 

2# 

3# Copyright (c) 2013 by Christian Heimes <christian@python.org> 

4# Licensed to PSF under a Contributor Agreement. 

5# See https://www.python.org/psf/license for licensing details. 

6"""Defused xml.sax.expatreader 

7""" 

8from __future__ import print_function, absolute_import 

9 

10from xml.sax.expatreader import ExpatParser as _ExpatParser 

11 

12from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden 

13 

14__origin__ = "xml.sax.expatreader" 

15 

16 

17class DefusedExpatParser(_ExpatParser): 

18 """Defused SAX driver for the pyexpat C module.""" 

19 

20 def __init__( 

21 self, 

22 namespaceHandling=0, 

23 bufsize=2 ** 16 - 20, 

24 forbid_dtd=False, 

25 forbid_entities=True, 

26 forbid_external=True, 

27 ): 

28 _ExpatParser.__init__(self, namespaceHandling, bufsize) 

29 self.forbid_dtd = forbid_dtd 

30 self.forbid_entities = forbid_entities 

31 self.forbid_external = forbid_external 

32 

33 def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): 

34 raise DTDForbidden(name, sysid, pubid) 

35 

36 def defused_entity_decl( 

37 self, name, is_parameter_entity, value, base, sysid, pubid, notation_name 

38 ): 

39 raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) 

40 

41 def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): 

42 # expat 1.2 

43 raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) # pragma: no cover 

44 

45 def defused_external_entity_ref_handler(self, context, base, sysid, pubid): 

46 raise ExternalReferenceForbidden(context, base, sysid, pubid) 

47 

48 def reset(self): 

49 _ExpatParser.reset(self) 

50 parser = self._parser 

51 if self.forbid_dtd: 

52 parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl 

53 if self.forbid_entities: 

54 parser.EntityDeclHandler = self.defused_entity_decl 

55 parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl 

56 if self.forbid_external: 

57 parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler 

58 

59 

60def create_parser(*args, **kwargs): 

61 return DefusedExpatParser(*args, **kwargs)