This is an automated email from the ASF dual-hosted git repository.

garydgregory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/commons-xml.git

commit 7c83633867edef016bd7ad5117f5f79e516df931
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Aug 28 13:36:05 2026 -0400

    Rename HardeningExpatXMLReader to SecureExpatXMLReader.
    
    Local build OK.
---
 .../java/org/apache/commons/xml/SecureSAXParserFactory.java    | 10 +++++-----
 src/main/java/org/apache/commons/xml/SecureXMLReader.java      |  2 +-
 src/test/java/org/apache/commons/xml/AttackTestSupport.java    |  4 ++--
 src/test/java/org/apache/commons/xml/ShadingFootprintTest.java |  8 ++++----
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/apache/commons/xml/SecureSAXParserFactory.java 
b/src/main/java/org/apache/commons/xml/SecureSAXParserFactory.java
index 7d99fa6..58489ba 100644
--- a/src/main/java/org/apache/commons/xml/SecureSAXParserFactory.java
+++ b/src/main/java/org/apache/commons/xml/SecureSAXParserFactory.java
@@ -85,7 +85,7 @@ public final class SecureSAXParserFactory {
      *     <li><strong>Android</strong> (Harmony / Expat): {@link 
XMLConstants#FEATURE_SECURE_PROCESSING FSP} and the JAXP 1.5 {@code 
ACCESS_EXTERNAL_*} properties
      *         are not recognized, and libexpat enforces its own Billion 
Laughs check, so neither is applied. Two fixups are still needed: an ignore-all 
resolver
      *         (Expat ignores external fetches silently when no resolver is 
set; the floor keeps that behavior non-bypassable, resolving anything 
unresolved to
-     *         empty), and a {@link HardeningExpatXMLReader} so the 
unsupported {@code namespace-prefixes} feature is rejected at
+     *         empty), and a {@link SecureExpatXMLReader} so the unsupported 
{@code namespace-prefixes} feature is rejected at
      *         configuration time rather than mid-parse.</li>
      *     <li><strong>FSP</strong>: required on every other reader. It 
switches on the implementation's built-in security manager, which is what 
carries the
      *         processing limits.</li>
@@ -143,9 +143,9 @@ static XMLReader secure(final XMLReader reader) {
         }
         if (ANDROID_EXPAT_READER.equals(reader.getClass().getName())) {
             // Expat ignores external fetches when no resolver is set; the 
ignore-all floor keeps that behavior non-bypassable (routing a caller-set 
resolver,
-            // including SAXParser.parse's handler, through it and resolving 
anything unresolved to empty) and, via HardeningExpatXMLReader, rejects the
+            // including SAXParser.parse's handler, through it and resolving 
anything unresolved to empty) and, via SecureExpatXMLReader, rejects the
             // unsupported namespace-prefixes feature eagerly rather than 
mid-parse.
-            return new HardeningExpatXMLReader(reader);
+            return new SecureExpatXMLReader(reader);
         }
         // Required: enables the JDK XMLSecurityManager / Xerces 
SecurityManager limits.
         setFeature(reader, XMLConstants.FEATURE_SECURE_PROCESSING, true);
@@ -325,11 +325,11 @@ private SecureSAXParserFactory() {
      * {@code parse}, with a {@link SAXNotSupportedException}. Reporting the 
rejection eagerly from {@link #setFeature(String, boolean)} lets consumers that 
probe
      * the feature, such as Xalan's identity transformer, catch the exception 
and fall back instead of failing the whole parse.</p>
      */
-    static final class HardeningExpatXMLReader extends SecureXMLReader {
+    static final class SecureExpatXMLReader extends SecureXMLReader {
 
         private static final String NAMESPACE_PREFIXES_FEATURE = 
"http://xml.org/sax/features/namespace-prefixes";;
 
-        HardeningExpatXMLReader(final XMLReader delegate) {
+        SecureExpatXMLReader(final XMLReader delegate) {
             super(delegate);
         }
 
diff --git a/src/main/java/org/apache/commons/xml/SecureXMLReader.java 
b/src/main/java/org/apache/commons/xml/SecureXMLReader.java
index 1dff366..25d9408 100644
--- a/src/main/java/org/apache/commons/xml/SecureXMLReader.java
+++ b/src/main/java/org/apache/commons/xml/SecureXMLReader.java
@@ -38,7 +38,7 @@
  * {@link javax.xml.parsers.SAXParser#parse(org.xml.sax.InputSource, 
org.xml.sax.helpers.DefaultHandler) SAXParser.parse(source, handler)} installs 
as the
  * reader's entity resolver, which would otherwise silently replace the floor. 
{@link #getEntityResolver()} reports the caller's resolver unwrapped.</p>
  *
- * <p>Every other method forwards to the wrapped delegate; subclasses (e.g. 
{@code HardeningExpatXMLReader}) add per-implementation fixups on top of the 
floor.</p>
+ * <p>Every other method forwards to the wrapped delegate; subclasses (e.g. 
{@code SecureExpatXMLReader}) add per-implementation fixups on top of the 
floor.</p>
  */
 class SecureXMLReader implements XMLReader {
 
diff --git a/src/test/java/org/apache/commons/xml/AttackTestSupport.java 
b/src/test/java/org/apache/commons/xml/AttackTestSupport.java
index 4c7a622..e79ca36 100644
--- a/src/test/java/org/apache/commons/xml/AttackTestSupport.java
+++ b/src/test/java/org/apache/commons/xml/AttackTestSupport.java
@@ -91,7 +91,7 @@
 final class AttackTestSupport {
 
     /**
-     * Test-only permissive counterpart of {@code 
SecureSAXParserFactory.HardeningExpatXMLReader}: a pass-through Expat wrapper 
that rejects the
+     * Test-only permissive counterpart of {@code 
SecureSAXParserFactory.SecureExpatXMLReader}: a pass-through Expat wrapper that 
rejects the
      * {@code namespace-prefixes} feature eagerly (so a probing TrAX identity 
transformer falls back instead of failing the whole parse) but installs no 
ignore-all
      * resolver floor, so the unconfigured/positive controls stay permissive.
      */
@@ -888,7 +888,7 @@ private static void liftEntityLimits(final XMLReader 
reader) {
      *
      * <p>On Android the reader is Expat, which accepts {@code 
namespace-prefixes} at {@code setFeature} time but fails mid-parse; a probing 
TrAX path (an
      * identity transform, or Xalan's {@code TrAXFilter} self-provisioning) 
enables that feature, so wrap it to reject the feature eagerly (matching the
-     * production {@code HardeningExpatXMLReader}) while keeping the control 
permissive (no floor).</p>
+     * production {@code SecureExpatXMLReader}) while keeping the control 
permissive (no floor).</p>
      *
      * @return A permissive reader, wrapped on Android to reject {@code 
namespace-prefixes} eagerly.
      */
diff --git a/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java 
b/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
index dd09608..a1d581b 100644
--- a/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
+++ b/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
@@ -73,7 +73,7 @@ class ShadingFootprintTest {
             "SecureSAXParser",
             "SecureSAXParserFactory",
             "SecureSAXParserFactory$1",
-            "SecureSAXParserFactory$HardeningExpatXMLReader",
+            "SecureSAXParserFactory$SecureExpatXMLReader",
             "SecureSAXParserFactory$Wrapper",
             "SecureXMLReader",
             "MethodHandleFactory");
@@ -106,7 +106,7 @@ class ShadingFootprintTest {
             "SecureSAXParser",
             "SecureSAXParserFactory",
             "SecureSAXParserFactory$1",
-            "SecureSAXParserFactory$HardeningExpatXMLReader",
+            "SecureSAXParserFactory$SecureExpatXMLReader",
             "SecureSAXParserFactory$Wrapper",
             "SecureTemplates",
             "SecureTemplatesHandler",
@@ -136,7 +136,7 @@ class ShadingFootprintTest {
             "SecureSAXParser",
             "SecureSAXParserFactory",
             "SecureSAXParserFactory$1",
-            "SecureSAXParserFactory$HardeningExpatXMLReader",
+            "SecureSAXParserFactory$SecureExpatXMLReader",
             "SecureSAXParserFactory$Wrapper",
             "SecureXMLReader",
             "SecureXPath",
@@ -158,7 +158,7 @@ class ShadingFootprintTest {
             "SecureSAXParser",
             "SecureSAXParserFactory",
             "SecureSAXParserFactory$1",
-            "SecureSAXParserFactory$HardeningExpatXMLReader",
+            "SecureSAXParserFactory$SecureExpatXMLReader",
             "SecureSAXParserFactory$Wrapper",
             "SecureSchema",
             "SecureSchemaFactory",

Reply via email to