Index: lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java =================================================================== diff -u -r781bea2da1fdfb017f99d0a389de8a4d83704cf3 -r9592b43376eddffe01711a9c27329414b68b1e97 --- lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java (.../FileUtil.java) (revision 781bea2da1fdfb017f99d0a389de8a4d83704cf3) +++ lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java (.../FileUtil.java) (revision 9592b43376eddffe01711a9c27329414b68b1e97) @@ -874,6 +874,7 @@ client.ping(); // try scanning ScanResult result = client.scan(inputStream); + inputStream.close(); if (result instanceof ScanResult.OK) { if (log.isDebugEnabled()) { log.debug("File scan completed successfully"); Index: lams_contentrepository/.classpath =================================================================== diff -u -r4148b35337096058f50c22fa950f64aa77294a4f -r9592b43376eddffe01711a9c27329414b68b1e97 --- lams_contentrepository/.classpath (.../.classpath) (revision 4148b35337096058f50c22fa950f64aa77294a4f) +++ lams_contentrepository/.classpath (.../.classpath) (revision 9592b43376eddffe01711a9c27329414b68b1e97) @@ -1,21 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java =================================================================== diff -u -r783f965b1bb2251474d01f32a53e4ccb28d5473b -r9592b43376eddffe01711a9c27329414b68b1e97 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 783f965b1bb2251474d01f32a53e4ccb28d5473b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 9592b43376eddffe01711a9c27329414b68b1e97) @@ -23,6 +23,7 @@ package org.lamsfoundation.lams.contentrepository.service; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -37,6 +38,7 @@ import java.util.Set; import java.util.SortedSet; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; @@ -444,7 +446,12 @@ } try { - boolean isVirusFree = FileUtil.isVirusFree(iStream); + // copy the stream contents as it has to be read twice - once for scan, then for file processing + byte[] fileByteArray = IOUtils.toByteArray(iStream); + iStream.close(); + iStream = new ByteArrayInputStream(fileByteArray); + InputStream copy = new ByteArrayInputStream(fileByteArray); + boolean isVirusFree = FileUtil.isVirusFree(copy); if (!isVirusFree) { throw new InvalidParameterException("File contains a virus: " + filename); }