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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-net.git


The following commit(s) were added to refs/heads/master by this push:
     new 954b354b Add 
org.apache.commons.net.ftp.parser.OS400FTPEntryParserTest.testFuzz()
954b354b is described below

commit 954b354b3e786a095648fe60feeea4ef42470a51
Author: Gary Gregory <[email protected]>
AuthorDate: Thu Feb 26 08:53:34 2026 -0500

    Add org.apache.commons.net.ftp.parser.OS400FTPEntryParserTest.testFuzz()
---
 ...ized-OS400FTPEntryParserFuzzer-4734635798495232 |  1 +
 .../net/ftp/parser/OS400FTPEntryParserTest.java    | 27 ++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git 
a/src/main/resources/org/apache/commons/net/fuzzer/clusterfuzz-testcase-minimized-OS400FTPEntryParserFuzzer-4734635798495232
 
b/src/main/resources/org/apache/commons/net/fuzzer/clusterfuzz-testcase-minimized-OS400FTPEntryParserFuzzer-4734635798495232
new file mode 100644
index 00000000..816a3dcf
--- /dev/null
+++ 
b/src/main/resources/org/apache/commons/net/fuzzer/clusterfuzz-testcase-minimized-OS400FTPEntryParserFuzzer-4734635798495232
@@ -0,0 +1 @@
+bbcbbbbbbbbbbbbbbbbbb


Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa
*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEM
a*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa
*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEM
a*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma
*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa
*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa
*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa
*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa
*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*
 MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa
*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa
*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*M
a*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa
*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa
*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEM
a*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma
*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa
*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa
*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa
*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa
*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*M
a*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEM
 a*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma
*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa
*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa
*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEM
a*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma
*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa
*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa
*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa
*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa
*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*M
a*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa
*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa
*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*M
 EMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma
*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*M
a*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa
*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa
*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa
*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa
*MEMa*Ma*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*M
a*MEMa*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa
*MEMa*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa
*Ma*MEMa*Ma*MEMa*MEMa*MEMa*MEMa*MEMa*Ma*MEMa*MEMa*Ma*MEM
a*M
\ No newline at end of file
diff --git 
a/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java 
b/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
index c3a23f3d..c998e9b7 100644
--- 
a/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
+++ 
b/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
@@ -19,13 +19,20 @@ package org.apache.commons.net.ftp.parser;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Calendar;
 
 import org.apache.commons.net.ftp.FTPClientConfig;
 import org.apache.commons.net.ftp.FTPFile;
 import org.apache.commons.net.ftp.FTPFileEntryParser;
+import org.apache.commons.net.ftp.FTPListParseEngine;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -84,6 +91,26 @@ class OS400FTPEntryParserTest extends 
CompositeFTPParseTestFramework {
         testPrecision("PEP              4019 04/03/18 18:58:16 *STMF      
einladung.zip", CalendarUnit.SECOND);
     }
 
+    /**
+     * Tries to reproduce a fuzzing failure.
+     */
+    @Test
+    void testFuzz() throws IOException {
+        final byte[] allBytes = Files.readAllBytes(
+                
Paths.get("src/main/resources/org/apache/commons/net/fuzzer/clusterfuzz-testcase-minimized-OS400FTPEntryParserFuzzer-4734635798495232"));
+        final OS400FTPEntryParser parser = new OS400FTPEntryParser();
+        parser.configure(null);
+        final FTPListParseEngine engine = new FTPListParseEngine(parser);
+        // FTPListParseEngine
+        engine.readServerList(new ByteArrayInputStream(allBytes), null); // 
use default encoding
+        final FTPFile[] files = engine.getFiles();
+        assertEquals(0, files.length);
+        // OS400FTPEntryParser
+        final String string = new String(allBytes, StandardCharsets.UTF_8);
+        assertTrue(parser.matches(string));
+        assertNull(parser.parseFTPEntry(string));
+    }
+
     @Test
     void testNET573() {
         final FTPClientConfig conf = new 
FTPClientConfig(FTPClientConfig.SYST_AS400);

Reply via email to