This is an automated email from the ASF dual-hosted git repository.
tballison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new 0f04d49607 substitute the input path per argument in GDALParser (#3412)
0f04d49607 is described below
commit 0f04d496073e243b0f36aa1277f21470280fa284
Author: Naveed <[email protected]>
AuthorDate: Mon Oct 26 17:55:56 2026 +0530
substitute the input path per argument in GDALParser (#3412)
GDALParser substituted the input path into the command string and then
split the result on whitespace, so a path containing spaces became
several gdalinfo arguments. Split the command template first and
substitute the path into each argument, as ExternalParser does.
Generated-by: Claude Code (Claude Opus 5.5)
---
.../src/main/java/org/apache/tika/parser/gdal/GDALParser.java | 11 ++++++++++-
.../test/java/org/apache/tika/parser/gdal/TestGDALParser.java | 8 ++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git
a/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
b/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
index 285e4670da..fb81e7328d 100644
---
a/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
+++
b/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
@@ -192,6 +192,15 @@ public class GDALParser implements Parser {
return pCommand;
}
+ // Split before substituting so whitespace in the input path stays inside
one argument.
+ static String[] buildCommandLine(String command, String inputPath) {
+ String[] args = command.split("\\s+", -1);
+ for (int i = 0; i < args.length; i++) {
+ args[i] = args[i].replace(INPUT_FILE_TOKEN, inputPath);
+ }
+ return args;
+ }
+
@Override
public Set<MediaType> getSupportedTypes(ParseContext context) {
return SUPPORTED_TYPES;
@@ -209,7 +218,7 @@ public class GDALParser implements Parser {
// process the command
TemporaryResources tmp = null;
- String[] runCommand = processCommand(tis).split("\\s+", -1);
+ String[] runCommand = buildCommandLine(this.command,
tis.getFile().getPath());
FileProcessResult result = ProcessUtils.execute(new
ProcessBuilder(runCommand), context,
timeoutMillis, maxStdOut, maxStdErr);
diff --git
a/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/test/java/org/apache/tika/parser/gdal/TestGDALParser.java
b/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/test/java/org/apache/tika/parser/gdal/TestGDALParser.java
index 680e1d195d..d6e87ac387 100644
---
a/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/test/java/org/apache/tika/parser/gdal/TestGDALParser.java
+++
b/tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/test/java/org/apache/tika/parser/gdal/TestGDALParser.java
@@ -16,6 +16,7 @@
*/
package org.apache.tika.parser.gdal;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -154,4 +155,11 @@ public class TestGDALParser extends TikaTest {
fail(e.getMessage());
}
}
+
+ @Test
+ public void testInputPathWithWhitespaceIsOneArgument() {
+ String path = "/data/survey 2024/tile.tif --config GDAL_HTTP_PROXY
attacker:8080";
+ assertArrayEquals(new String[]{"gdalinfo", path},
+ GDALParser.buildCommandLine(new GDALParser().getCommand(),
path));
+ }
}