java/src/org/openantivirus/engine/vfs/container CompressedContainerFactory.java,1.3,1.4
Kurt Huwig <[email protected]> Sun, 30 May 2004 00:52:46 +0000
| Newsgroups | gmane.comp.security.virus.openantivirus.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/openantivirus/java/src/org/openantivirus/engine/vfs/container
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13916/src/org/openantivirus/engine/vfs/container
Modified Files:
CompressedContainerFactory.java
Log Message:
Added options for archives
Index: CompressedContainerFactory.java
===================================================================
RCS file: /cvsroot/openantivirus/java/src/org/openantivirus/engine/vfs/container/CompressedContainerFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CompressedContainerFactory.java 23 May 2004 15:22:36 -0000 1.3
+++ CompressedContainerFactory.java 30 May 2004 00:52:44 -0000 1.4
@@ -88,18 +88,25 @@
ZOO_MAGIC = {(byte)0xdc, (byte)0xa7, (byte)0xc4, (byte)0xfd};
public VfsContainer getContainer(VfsEntry entry,
- ScanConfiguration configuration)
+ ScanConfiguration scanConf)
throws IOException {
+
+ if (!scanConf.getBoolean("vfs.archive.enable")) {
+ return null;
+ }
+
final byte[] start = entry.getStart();
// ZIP
- if (startsWithMagic(start, ZIP_MAGIC)) {
- return new ZipContainer(entry, configuration);
+ if (scanConf.getBoolean("vfs.archive.zip")
+ && startsWithMagic(start, ZIP_MAGIC)) {
+ return new ZipContainer(entry, scanConf);
}
// BZIP2
- if (startsWithMagic(start, BZIP2_MAGIC)) {
- return new SingleFileContainer(entry, "bzip2", configuration) {
+ if (scanConf.getBoolean("vfs.archive.bzip2")
+ && startsWithMagic(start, BZIP2_MAGIC)) {
+ return new SingleFileContainer(entry, "bzip2", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
runCommand(new String[] {
@@ -112,8 +119,9 @@
}
// GZIP
- if (startsWithMagic(start, GZIP_MAGIC)) {
- return new SingleFileContainer(entry, "gzip", configuration) {
+ if (scanConf.getBoolean("vfs.archive.gzip")
+ && startsWithMagic(start, GZIP_MAGIC)) {
+ return new SingleFileContainer(entry, "gzip", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
copyStream(new GZIPInputStream(new FileInputStream(entry.getFile())),
@@ -123,8 +131,9 @@
}
// TAR
- if (containsMagic(start, TAR_MAGIC, 257)) {
- return new ArchiveContainer(entry, " >> tar:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.tar")
+ && containsMagic(start, TAR_MAGIC, 257)) {
+ return new ArchiveContainer(entry, " >> tar:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -137,8 +146,9 @@
}
// Microsoft Cabinet
- if (startsWithMagic(start, CAB_MAGIC)) {
- return new ArchiveContainer(entry, " >> cab:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.cab")
+ && startsWithMagic(start, CAB_MAGIC)) {
+ return new ArchiveContainer(entry, " >> cab:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -152,10 +162,11 @@
// Self-extracting
if (startsWithMagic(start, EXE_MAGIC)) {
- if (containsMagic(start, RAR_MAGIC, 7195)) {
+ if (scanConf.getBoolean("vfs.archive.rar")
+ && containsMagic(start, RAR_MAGIC, 7195)) {
return new ArchiveContainer(entry,
" >> rar-exe:",
- configuration) {
+ scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -167,29 +178,32 @@
};
}
- final File file = entry.getFile();
- final RandomAccessFile raf = new RandomAccessFile(file, "r");
- final UPXDecompress upxDecompress =
- new UPXDecompress(raf, file.length());
-
- boolean canUnpack;
- try {
- canUnpack = upxDecompress.canUnpack();
- } catch (Exception e) {
- // if anything goes wrong, we cannot unpack!
- e.printStackTrace();
- canUnpack = false;
- }
- if (canUnpack) {
- return new UpxContainer(entry, upxDecompress, configuration);
- } else {
- raf.close();
+ if (scanConf.getBoolean("vfs.archive.upx")) {
+ final File file = entry.getFile();
+ final RandomAccessFile raf = new RandomAccessFile(file, "r");
+ final UPXDecompress upxDecompress =
+ new UPXDecompress(raf, file.length());
+
+ boolean canUnpack;
+ try {
+ canUnpack = upxDecompress.canUnpack();
+ } catch (Exception e) {
+ // if anything goes wrong, we cannot unpack!
+ e.printStackTrace();
+ canUnpack = false;
+ }
+ if (canUnpack) {
+ return new UpxContainer(entry, upxDecompress, scanConf);
+ } else {
+ raf.close();
+ }
}
}
// ACE
- if (containsMagic(start, ACE_MAGIC, 7)) {
- return new ArchiveContainer(entry, " >> ace:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.ace")
+ && containsMagic(start, ACE_MAGIC, 7)) {
+ return new ArchiveContainer(entry, " >> ace:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -202,8 +216,9 @@
}
// AR
- if (startsWithMagic(start, AR_MAGIC)) {
- return new ArchiveContainer(entry, " >> ar:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.ar")
+ && startsWithMagic(start, AR_MAGIC)) {
+ return new ArchiveContainer(entry, " >> ar:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -216,8 +231,9 @@
}
// RAR
- if (startsWithMagic(start, RAR_MAGIC)) {
- return new ArchiveContainer(entry, " >> rar:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.rar")
+ && startsWithMagic(start, RAR_MAGIC)) {
+ return new ArchiveContainer(entry, " >> rar:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -230,20 +246,21 @@
}
// LHA
- if (containsMagic(start, LHA__MAGIC, 2)
- || containsMagic(start, LHA0_MAGIC, 2)
- || containsMagic(start, LHA1_MAGIC, 2)
- || containsMagic(start, LHA2_MAGIC, 2)
- || containsMagic(start, LHA3_MAGIC, 2)
- || containsMagic(start, LHA4_MAGIC, 2)
- || containsMagic(start, LHA5_MAGIC, 2)
- || containsMagic(start, LHA6_MAGIC, 2)
- || containsMagic(start, LHA7_MAGIC, 2)
- || containsMagic(start, LHA7_MAGIC, 2)
- || containsMagic(start, LHAD_MAGIC, 2)
- || containsMagic(start, LHAZ4_MAGIC, 2)
- || containsMagic(start, LHAZ5_MAGIC, 2)) {
- return new ArchiveContainer(entry, " >> lha:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.lha")
+ && (containsMagic(start, LHA__MAGIC, 2)
+ || containsMagic(start, LHA0_MAGIC, 2)
+ || containsMagic(start, LHA1_MAGIC, 2)
+ || containsMagic(start, LHA2_MAGIC, 2)
+ || containsMagic(start, LHA3_MAGIC, 2)
+ || containsMagic(start, LHA4_MAGIC, 2)
+ || containsMagic(start, LHA5_MAGIC, 2)
+ || containsMagic(start, LHA6_MAGIC, 2)
+ || containsMagic(start, LHA7_MAGIC, 2)
+ || containsMagic(start, LHA7_MAGIC, 2)
+ || containsMagic(start, LHAD_MAGIC, 2)
+ || containsMagic(start, LHAZ4_MAGIC, 2)
+ || containsMagic(start, LHAZ5_MAGIC, 2))) {
+ return new ArchiveContainer(entry, " >> lha:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -255,8 +272,9 @@
}
// ARJ
- if (startsWithMagic(start, ARJ_MAGIC)) {
- return new ArchiveContainer(entry, " >> arj:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.arj")
+ && startsWithMagic(start, ARJ_MAGIC)) {
+ return new ArchiveContainer(entry, " >> arj:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -269,8 +287,9 @@
}
// ZOO
- if (containsMagic(start, ZOO_MAGIC, 0x14)) {
- return new ArchiveContainer(entry, " >> zoo:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.zoo")
+ && containsMagic(start, ZOO_MAGIC, 0x14)) {
+ return new ArchiveContainer(entry, " >> zoo:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -284,12 +303,13 @@
}
// CPIO
- if (startsWithMagic(start, CPIO_MAGIC)
- || startsWithMagic(start, CPIOS_MAGIC)
- || startsWithMagic(start, CPIO1_MAGIC)
- || startsWithMagic(start, CPIO2_MAGIC)
- || startsWithMagic(start, CPIO7_MAGIC)) {
- return new ArchiveContainer(entry, " >> cpio:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.cpio")
+ && (startsWithMagic(start, CPIO_MAGIC)
+ || startsWithMagic(start, CPIOS_MAGIC)
+ || startsWithMagic(start, CPIO1_MAGIC)
+ || startsWithMagic(start, CPIO2_MAGIC)
+ || startsWithMagic(start, CPIO7_MAGIC))) {
+ return new ArchiveContainer(entry, " >> cpio:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -303,8 +323,9 @@
}
// TNEF
- if (startsWithMagic(start, TNEF_MAGIC)) {
- return new ArchiveContainer(entry, " >> tnef:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.tnef")
+ && startsWithMagic(start, TNEF_MAGIC)) {
+ return new ArchiveContainer(entry, " >> tnef:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -318,8 +339,9 @@
}
// SHAR
- if (containsMagic(start, SHAR_MAGIC, 10)) {
- return new ArchiveContainer(entry, " >> shar:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.shar")
+ && containsMagic(start, SHAR_MAGIC, 10)) {
+ return new ArchiveContainer(entry, " >> shar:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -332,8 +354,9 @@
}
// UUENCODE
- if (startsWithMagic(start, UUENC_MAGIC)) {
- return new SingleFileContainer(entry, "uuencode", configuration) {
+ if (scanConf.getBoolean("vfs.archive.uuencode")
+ && startsWithMagic(start, UUENC_MAGIC)) {
+ return new SingleFileContainer(entry, "uuencode", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
runCommand(new String[] {
@@ -347,8 +370,9 @@
}
// COMPRESS
- if (startsWithMagic(start, COMPR_MAGIC)) {
- return new SingleFileContainer(entry, "compress", configuration) {
+ if (scanConf.getBoolean("vfs.archive.compress")
+ && startsWithMagic(start, COMPR_MAGIC)) {
+ return new SingleFileContainer(entry, "compress", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
runCommand(new String[] {
@@ -362,8 +386,9 @@
}
// RPM
- if (startsWithMagic(start, RPM_MAGIC)) {
- return new ArchiveContainer(entry, " >> rpm:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.rpm")
+ && startsWithMagic(start, RPM_MAGIC)) {
+ return new ArchiveContainer(entry, " >> rpm:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -378,13 +403,14 @@
}
// ARC
- if (startsWithMagic(start, ARC2_MAGIC)
- || startsWithMagic(start, ARC3_MAGIC)
- || startsWithMagic(start, ARC4_MAGIC)
- || startsWithMagic(start, ARC6_MAGIC)
- || startsWithMagic(start, ARC8_MAGIC)
- || startsWithMagic(start, ARC9_MAGIC)) {
- return new ArchiveContainer(entry, " >> arc:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.arc")
+ && (startsWithMagic(start, ARC2_MAGIC)
+ || startsWithMagic(start, ARC3_MAGIC)
+ || startsWithMagic(start, ARC4_MAGIC)
+ || startsWithMagic(start, ARC6_MAGIC)
+ || startsWithMagic(start, ARC8_MAGIC)
+ || startsWithMagic(start, ARC9_MAGIC))) {
+ return new ArchiveContainer(entry, " >> arc:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
runCommand(new String[] {
@@ -397,8 +423,9 @@
}
// LZO
- if (startsWithMagic(start, LZO_MAGIC)) {
- return new SingleFileContainer(entry, "lzop", configuration) {
+ if (scanConf.getBoolean("vfs.archive.lzo")
+ && startsWithMagic(start, LZO_MAGIC)) {
+ return new SingleFileContainer(entry, "lzop", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
runCommand(new String[] {
@@ -412,8 +439,9 @@
}
// PPMd
- if (startsWithMagic(start, PPMD_MAGIC)) {
- return new ArchiveContainer(entry, " >> ppmd:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.ppmd")
+ && startsWithMagic(start, PPMD_MAGIC)) {
+ return new ArchiveContainer(entry, " >> ppmd:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
final String tempFilename =
@@ -433,8 +461,9 @@
}
// DACT
- if (startsWithMagic(start, DACT_MAGIC)) {
- return new SingleFileContainer(entry, "dact", configuration) {
+ if (scanConf.getBoolean("vfs.archive.dact")
+ && startsWithMagic(start, DACT_MAGIC)) {
+ return new SingleFileContainer(entry, "dact", scanConf) {
public void extractFile(VfsEntry entry, File tempFile)
throws IOException {
runCommand(new String[] {
@@ -448,8 +477,9 @@
}
// DAR
- if (startsWithMagic(start, DAR_MAGIC)) {
- return new ArchiveContainer(entry, " >> dar:", configuration) {
+ if (scanConf.getBoolean("vfs.archive.dar")
+ && startsWithMagic(start, DAR_MAGIC)) {
+ return new ArchiveContainer(entry, " >> dar:", scanConf) {
public void extractArchive(VfsEntry entry, File tempDir)
throws IOException {
final String filename = entry.getFile().getCanonicalPath();
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click