File: test_parse_xml.py

package info (click to toggle)
python-gvm 26.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 5,132 kB
  • sloc: python: 44,662; makefile: 18
file content (32 lines) | stat: -rw-r--r-- 852 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# SPDX-FileCopyrightText: 2018-2024 Greenbone AG
#
# SPDX-License-Identifier: GPL-3.0-or-later
#

import unittest

from gvm.errors import GvmError
from gvm.xml import parse_xml


class ParseXmlTestCase(unittest.TestCase):
    def test_missing_closing_tag(self):
        with self.assertRaises(GvmError):
            parse_xml("<foo>")

    def test_invalid_tag(self):
        with self.assertRaises(GvmError):
            parse_xml("<foo&bar/>")

    def test_xml_bomb(self):
        xml = (
            "<!DOCTYPE xmlbomb ["
            '<!ENTITY a "1234567890" >'
            '<!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;">'
            '<!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;">'
            '<!ENTITY d "&c;&c;&c;&c;&c;&c;&c;&c;">'
            "]>"
            "<bomb>&c;</bomb>"
        )
        with self.assertRaises(GvmError):
            parse_xml(xml)