File tree Expand file tree Collapse file tree 6 files changed +83
-1
lines changed Expand file tree Collapse file tree 6 files changed +83
-1
lines changed Original file line number Diff line number Diff line change 6
6
from xml .etree .ElementTree import Element # nosec B405
7
7
8
8
import defusedxml .ElementTree
9
+ from defusedxml import DefusedXmlException
9
10
from defusedxml .ElementTree import fromstring
10
11
11
12
logger : logging .Logger = logging .getLogger (__name__ )
@@ -31,4 +32,6 @@ def parse_pom_string(pom_string: str) -> Element | None:
31
32
return pom
32
33
except defusedxml .ElementTree .ParseError as error :
33
34
logger .debug ("Failed to parse XML: %s" , error )
34
- return None
35
+ except DefusedXmlException as error :
36
+ logger .debug ("POM rejected due to possible security issues: %s" , error )
37
+ return None
Original file line number Diff line number Diff line change
1
+ # Copyright (c) 2025 - 2025, Oracle and/or its affiliates. All rights reserved.
2
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/.
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" ISO-8859-1" ?>
2
+ <!DOCTYPE xml [<!ENTITY quot " " " >]>
Original file line number Diff line number Diff line change
1
+ <?xml
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <project xmlns =" http://maven.apache.org/POM/4.0.0"
3
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi : schemaLocation =" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" >
5
+ <modelVersion >4.0.0</modelVersion >
6
+ <groupId >com.oracle.database.xml</groupId >
7
+ <artifactId >xdb</artifactId >
8
+ <version >23.9.0.25.07</version >
9
+ <packaging >jar</packaging >
10
+
11
+ <!--
12
+ xdb.jar: Support for the JDBC 4.x standard java.sql.SQLXML interface.
13
+ Note: xdb6.jar is a legacy name, xdb.jar is the new name.
14
+ Refer to "List of Artifacts (BOM)" section of the Maven Central Guide
15
+ https://www.oracle.com/database/technologies/maven-central-guide.html#artifacts
16
+ -->
17
+ <name >xdb</name >
18
+ <description >Support for the JDBC 4.x standard java.sql.SQLXML interface</description >
19
+ <url >https://www.oracle.com/database/technologies/maven-central-guide.html</url >
20
+ <inceptionYear >1997</inceptionYear >
21
+
22
+ <licenses >
23
+ <license >
24
+ <name >Oracle Free Use Terms and Conditions (FUTC)</name >
25
+ <url >https://www.oracle.com/downloads/licenses/oracle-free-license.html</url >
26
+ </license >
27
+ </licenses >
28
+
29
+ <developers >
30
+ <developer >
31
+ <organization >Oracle America, Inc.</organization >
32
+ <organizationUrl >http://www.oracle.com</organizationUrl >
33
+ </developer >
34
+ </developers >
35
+
36
+ <scm >
37
+ <url >https://github.com/oracle</url >
38
+ </scm >
39
+
40
+ </project >
Original file line number Diff line number Diff line change
1
+ # Copyright (c) 2025 - 2025, Oracle and/or its affiliates. All rights reserved.
2
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/.
3
+
4
+ """
5
+ This module tests the POM parser.
6
+ """
7
+
8
+ import os
9
+ from pathlib import Path
10
+
11
+ import pytest
12
+
13
+ from macaron .parsers .pomparser import parse_pom_string as parse
14
+
15
+ RESOURCES_DIR = Path (__file__ ).parent .joinpath ("resources" )
16
+
17
+
18
+ def test_pomparser_parse () -> None :
19
+ """Test parsing a valid XML file."""
20
+ with open (os .path .join (RESOURCES_DIR , "valid.xml" ), encoding = "utf8" ) as file :
21
+ assert parse (file .read ())
22
+
23
+
24
+ @pytest .mark .parametrize (
25
+ "file_name" ,
26
+ [
27
+ "forbidden_entity.xml" ,
28
+ "invalid.xml" ,
29
+ ],
30
+ )
31
+ def test_pomparser_parse_invalid (file_name : str ) -> None :
32
+ """Test parsing invalid XML files."""
33
+ with open (os .path .join (RESOURCES_DIR , file_name ), encoding = "utf8" ) as file :
34
+ assert not parse (file .read ())
You can’t perform that action at this time.
0 commit comments