X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.support.activemq%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjms%2FJmsAttachmentListener.java;h=8b91e7697093dfdd6c4bd0e4a1be824cb3ff6f91;hb=9c82ed02a7ee7b4a757853d8160587b27e493f1a;hp=46e828060b2f08cfe2b7eea795e8db81b4afe377;hpb=44dd5750650b46d9979b4e06e4cc76c0b0003f4f;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java index 46e828060..8b91e7697 100644 --- a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java @@ -30,15 +30,23 @@ public class JmsAttachmentListener implements MessageListener { .setContentType(msg .getStringProperty(JmsAttachmentUploader.ATTACHMENT_CONTENT_TYPE)); - byte[] buffer = new byte[(int) message.getBodyLength()]; + // Check body length + Long bodyLength = message.getBodyLength(); + if (bodyLength > Integer.MAX_VALUE) + throw new SlcException("Attachment cannot be bigger than " + + Integer.MAX_VALUE + + " bytes with this transport. Use another transport."); + + byte[] buffer = new byte[bodyLength.intValue()]; message.readBytes(buffer); in = new ByteArrayInputStream(buffer); attachmentsStorage.storeAttachment(attachment, in); } catch (JMSException e) { throw new SlcException("Could not process attachment message " + msg, e); + } finally { + IOUtils.closeQuietly(in); } - IOUtils.closeQuietly(in); } public void setAttachmentsStorage(AttachmentsStorage attachmentsStorage) {