This is an automated email from the ASF dual-hosted git repository.
pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 6a53010390 NIFI-10002 Validated Directory Path in ListFile
6a53010390 is described below
commit 6a53010390da4a3005ab7904517cf10f725bcbb0
Author: exceptionfactory <[email protected]>
AuthorDate: Tue Oct 15 22:04:48 2024 -0500
NIFI-10002 Validated Directory Path in ListFile
- Throw IOException for null or blank directories to avoid invalid
directory expressions
Signed-off-by: Pierre Villard <[email protected]>
This closes #9393.
---
.../org/apache/nifi/processors/standard/ListFile.java | 7 ++++++-
.../apache/nifi/processors/standard/TestListFile.java | 16 ++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
index 2f461da48e..a21fb25bba 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
@@ -506,7 +506,12 @@ public class ListFile extends
AbstractListProcessor<FileInfo> {
private List<FileInfo> performListing(final ProcessContext context, final
Long minTimestamp, final ListingMode listingMode, final boolean applyFilters)
throws IOException {
- final Path basePath = new File(getPath(context)).toPath();
+ final String evaluatedPath = getPath(context);
+ if (evaluatedPath == null || evaluatedPath.isBlank()) {
+ throw new IOException("Blank Directory is not valid: review
configured expression for Directory property");
+ }
+
+ final Path basePath = new File(evaluatedPath).toPath();
final Boolean recurse = context.getProperty(RECURSE).asBoolean();
final Map<Path, BasicFileAttributes> lastModifiedMap = new HashMap<>();
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
index 4d605217c3..391c02facb 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
@@ -27,6 +27,8 @@ import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.util.list.AbstractListProcessor;
import org.apache.nifi.processor.util.list.ListProcessorTestWatcher;
import org.apache.nifi.processor.util.file.transfer.FileInfo;
+import org.apache.nifi.util.LogMessage;
+import org.apache.nifi.util.MockComponentLog;
import org.apache.nifi.util.MockFlowFile;
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
@@ -161,6 +163,20 @@ public class TestListFile {
assertEquals("/dir/test2", processor.getPath(context));
}
+ @Test
+ public void testPerformListingBlankDirectoryFailed() throws Exception {
+ runner.setProperty(ListFile.DIRECTORY, "${literal('')}");
+ runNext();
+ runner.assertTransferCount(ListFile.REL_SUCCESS, 0);
+
+ final MockComponentLog logger = runner.getLogger();
+ final List<LogMessage> errorMessages = logger.getErrorMessages();
+ assertFalse(errorMessages.isEmpty());
+
+ final LogMessage firstLogMessage = errorMessages.getFirst();
+ assertTrue(firstLogMessage.getMsg().contains("Blank"));
+ }
+
@Test
public void testPerformListing() throws Exception {