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);