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);
}