From b3c3b09d2d24a31982085754c06b8e974a1ef661 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Tue, 9 Jul 2024 17:56:24 +0200 Subject: [PATCH] Added overload; added max size check --- .../mustangproject/validator/ZUGFeRDValidator.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java index 6214139a..38874cfd 100644 --- a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java @@ -1,5 +1,6 @@ package org.mustangproject.validator; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -103,6 +104,10 @@ public class ZUGFeRDValidator { // Except it is "" LOL context.addResultItem( new ValidationResultItem(ESeverity.fatal, "File too small").setSection(5).setPart(EPart.pdf)); + } else if (inputLength >= Integer.MAX_VALUE) { + // Byte arrays are limited to 2GB in Java + context.addResultItem( + new ValidationResultItem(ESeverity.fatal, "File too big").setSection(5).setPart(EPart.pdf)); } else { content = IOUtils.toByteArray(inputStream); XMLValidator xv = new XMLValidator(context); @@ -252,6 +257,15 @@ public class ZUGFeRDValidator { } } + public String validate(byte[] bytes, String fileNameOfInputStream) { + try(ByteArrayInputStream bais = new ByteArrayInputStream (bytes)) { + return internalValidate (fileNameOfInputStream, bais, bytes.length); + } + catch (IOException ex) { + throw new UncheckedIOException (ex); + } + } + private void getPdfValidationResults(StringBuilder finalStringResult, PDFValidator pdfv, XMLValidator xv) throws IrrecoverableValidationError { finalStringResult.append(pdfv.getXMLResult()); pdfValidity = context.isValid();