From d4d92aec609b8066e0912ed6f980739a671b5ddf Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Tue, 19 Nov 2024 17:12:15 +0100 Subject: [PATCH] Fix image validation #262 --- .../doc/val/core/basic/ImageValidator.java | 26 +++++++----------- .../java/doc/val/p7m/P7MContentValidator.java | 8 ++++-- .../doc/val/p7m/TestP7MContentValidator.java | 5 ++++ .../test/resources/sample/docx_as_docx.docx | Bin 0 -> 11751 bytes 4 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 fj-doc-val-p7m/src/test/resources/sample/docx_as_docx.docx diff --git a/fj-doc-val-core/src/main/java/org/fugerit/java/doc/val/core/basic/ImageValidator.java b/fj-doc-val-core/src/main/java/org/fugerit/java/doc/val/core/basic/ImageValidator.java index baf08b145..5b5ff8aaf 100644 --- a/fj-doc-val-core/src/main/java/org/fugerit/java/doc/val/core/basic/ImageValidator.java +++ b/fj-doc-val-core/src/main/java/org/fugerit/java/doc/val/core/basic/ImageValidator.java @@ -1,6 +1,5 @@ package org.fugerit.java.doc.val.core.basic; -import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.Iterator; @@ -11,7 +10,6 @@ import javax.imageio.stream.ImageInputStream; import org.fugerit.java.core.lang.helpers.JavaVersionHelper; -import org.fugerit.java.core.util.result.Result; import org.fugerit.java.doc.val.core.DocTypeValidationResult; import org.fugerit.java.doc.val.core.DocTypeValidator; @@ -54,23 +52,19 @@ public static boolean javaVersionSupportHelper( int javaMajorVersionFound, int j private int javaMajorVersionRequired; @Override - public DocTypeValidationResult validate(InputStream is) throws IOException { - DocTypeValidationResult result = DocTypeValidationResult.newFail(); + public DocTypeValidationResult validate(InputStream is) { try ( ImageInputStream iis = ImageIO.createImageInputStream( is ) ) { Iterator readers = ImageIO.getImageReadersByFormatName( this.format ); - while (readers.hasNext()) { - try { - ImageReader reader = readers.next(); - reader.setInput(iis); - reader.read(0); - result.setResultCode( Result.RESULT_CODE_OK ); - break; - } catch (IOException exp) { - log.debug( "checkImage {}", exp.getMessage() ); - } - } + if (readers.hasNext()) { + ImageReader reader = readers.next(); + reader.setInput(iis); + reader.read(0); + return DocTypeValidationResult.newOk(); + } + } catch (Exception exp) { + log.debug( "checkImage (v2) {}", exp.getMessage() ); } - return result; + return DocTypeValidationResult.newFail(); } protected ImageValidator(String mimeType, Set supportedExtensions, String format, int javaMajorVersionRequired) { diff --git a/fj-doc-val-p7m/src/main/java/org/fugerit/java/doc/val/p7m/P7MContentValidator.java b/fj-doc-val-p7m/src/main/java/org/fugerit/java/doc/val/p7m/P7MContentValidator.java index 60922b0d7..dd9f0c80b 100644 --- a/fj-doc-val-p7m/src/main/java/org/fugerit/java/doc/val/p7m/P7MContentValidator.java +++ b/fj-doc-val-p7m/src/main/java/org/fugerit/java/doc/val/p7m/P7MContentValidator.java @@ -3,6 +3,8 @@ import java.io.ByteArrayOutputStream; import java.io.InputStream; +import lombok.extern.slf4j.Slf4j; +import org.bouncycastle.cms.CMSException; import org.fugerit.java.core.cfg.ConfigRuntimeException; import org.fugerit.java.core.function.SafeFunction; import org.fugerit.java.doc.val.core.DocTypeValidationResult; @@ -13,6 +15,7 @@ import lombok.Getter; import lombok.Setter; +@Slf4j public class P7MContentValidator extends AbstractDocTypeValidator { public static final boolean DEFAULT_PROCEED_ON_INNTER_CHECK = Boolean.FALSE; @@ -51,10 +54,11 @@ public String checkInnerType(InputStream is ) { } else { throw new ConfigRuntimeException( "Content not valid for this validator facade!" ); } - } else { - return null; } + } catch (CMSException e) { + log.warn( String.format( "Error on inner check : %s", e ) ); } + return null; } ); } diff --git a/fj-doc-val-p7m/src/test/java/test/org/fugerit/java/doc/val/p7m/TestP7MContentValidator.java b/fj-doc-val-p7m/src/test/java/test/org/fugerit/java/doc/val/p7m/TestP7MContentValidator.java index 9ce7090ba..938059d6a 100644 --- a/fj-doc-val-p7m/src/test/java/test/org/fugerit/java/doc/val/p7m/TestP7MContentValidator.java +++ b/fj-doc-val-p7m/src/test/java/test/org/fugerit/java/doc/val/p7m/TestP7MContentValidator.java @@ -63,6 +63,11 @@ public void testP7MAsP7MKo() { Assert.assertTrue( ok ); } + @Test + public void testKO() { + Assert.assertNull( this.worker( CONTENT_JPG_PROCEED, "docx_as_docx.docx" ) ); + } + @Test public void testProccedKo() { Assert.assertNull( this.worker( CONTENT_JPG_PROCEED, FILENAME_PDF_AS_P7M ) ); diff --git a/fj-doc-val-p7m/src/test/resources/sample/docx_as_docx.docx b/fj-doc-val-p7m/src/test/resources/sample/docx_as_docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..4db2f89f849db7732140bcebc28ef5006cf5abd9 GIT binary patch literal 11751 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