From 444dc1b64c015197bf6b5219da9459bc0cf6f787 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 10 Sep 2025 16:40:27 +0100 Subject: Support disabling external file access --- .../zwobble/mammoth/internal/docx/DisabledFileReader.java | 11 +++++++++++ .../org/zwobble/mammoth/internal/docx/DocumentReader.java | 12 ++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/internal/docx/DisabledFileReader.java (limited to 'src/main/java/org/zwobble/mammoth/internal/docx') diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DisabledFileReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/DisabledFileReader.java new file mode 100644 index 0000000..03386d4 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DisabledFileReader.java @@ -0,0 +1,11 @@ +package org.zwobble.mammoth.internal.docx; + +import java.io.IOException; +import java.io.InputStream; + +public class DisabledFileReader implements FileReader { + @Override + public InputStream getInputStream(String uri) throws IOException { + throw new IOException("could not open external image '" + uri + "': external file access is disabled"); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java index 1955e55..495646f 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocumentReader.java @@ -22,13 +22,21 @@ import static org.zwobble.mammoth.internal.util.Lists.*; import static org.zwobble.mammoth.internal.util.Strings.trimLeft; public class DocumentReader { - public static InternalResult readDocument(Optional path, Archive zipFile) { + public static InternalResult readDocument( + Optional path, + Archive zipFile, + boolean externalFileAccess + ) { PartPaths partPaths = findPartPaths(zipFile); Styles styles = readStyles(zipFile, partPaths); Numbering numbering = readNumbering(zipFile, partPaths, styles); ContentTypes contentTypes = readContentTypes(zipFile); - FileReader fileReader = new PathRelativeFileReader(path); + + FileReader fileReader = externalFileAccess + ? new PathRelativeFileReader(path) + : new DisabledFileReader(); + PartWithBodyReader partReader = new PartWithBodyReader(zipFile, contentTypes, fileReader, numbering, styles); return InternalResult.flatMap( readNotes(partReader, partPaths), -- cgit v1.2.3