summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster
diff options
context:
space:
mode:
authorNils Schwabe2014-07-25 11:32:28 +0200
committerNils Schwabe2014-07-25 11:32:28 +0200
commitf6ce907f69cc497e4556f90e74ea9876fe71274d (patch)
tree349602d70396214d12dff17e2947a6bb8dd014f2 /src/main/java/org/openslx/imagemaster
parentMerge branch 'master' of git.openslx.org:bwlp/master-sync-shared (diff)
downloadmaster-sync-shared-f6ce907f69cc497e4556f90e74ea9876fe71274d.tar.gz
master-sync-shared-f6ce907f69cc497e4556f90e74ea9876fe71274d.tar.xz
master-sync-shared-f6ce907f69cc497e4556f90e74ea9876fe71274d.zip
[CRCFile] Add checks to prevent null pointer exception
[ClassTest] Made pretty
Diffstat (limited to 'src/main/java/org/openslx/imagemaster')
-rw-r--r--src/main/java/org/openslx/imagemaster/crcchecker/CRCChecker.java4
-rw-r--r--src/main/java/org/openslx/imagemaster/crcchecker/CRCFile.java6
-rw-r--r--src/main/java/org/openslx/imagemaster/crcchecker/ClassTest.java57
-rw-r--r--src/main/java/org/openslx/imagemaster/crcchecker/ImageFile.java7
4 files changed, 43 insertions, 31 deletions
diff --git a/src/main/java/org/openslx/imagemaster/crcchecker/CRCChecker.java b/src/main/java/org/openslx/imagemaster/crcchecker/CRCChecker.java
index f081294..e47c7dc 100644
--- a/src/main/java/org/openslx/imagemaster/crcchecker/CRCChecker.java
+++ b/src/main/java/org/openslx/imagemaster/crcchecker/CRCChecker.java
@@ -3,6 +3,8 @@ package org.openslx.imagemaster.crcchecker;
import java.io.IOException;
import java.util.zip.CRC32;
+import org.apache.log4j.Logger;
+
public class CRCChecker
{
private static final int blockSize = 16 * 1024 * 1024;
@@ -74,7 +76,7 @@ public class CRCChecker
} catch ( IOException e ) {
throw new IOException( "Could not read CRC file", e );
}
-
+
return ( crcSum == crcSumFromFile );
}
}
diff --git a/src/main/java/org/openslx/imagemaster/crcchecker/CRCFile.java b/src/main/java/org/openslx/imagemaster/crcchecker/CRCFile.java
index 1fa7453..357082b 100644
--- a/src/main/java/org/openslx/imagemaster/crcchecker/CRCFile.java
+++ b/src/main/java/org/openslx/imagemaster/crcchecker/CRCFile.java
@@ -117,6 +117,8 @@ public class CRCFile
{
if ( crcSums == null )
loadSums();
+ if (crcSums.size() == 0)
+ return 0;
if ( blockNumber < 0 )
return 0;
@@ -136,6 +138,8 @@ public class CRCFile
{
if ( crcSums == null )
loadSums();
+ if (crcSums.size() == 0)
+ return new ArrayList<>();
return this.crcSums;
}
@@ -156,6 +160,8 @@ public class CRCFile
{
if ( crcSums == null )
loadSums();
+ if (crcSums.size() == 0)
+ return 0;
return this.crcSums.get( 0 );
}
}
diff --git a/src/main/java/org/openslx/imagemaster/crcchecker/ClassTest.java b/src/main/java/org/openslx/imagemaster/crcchecker/ClassTest.java
index 7d905a3..37f7fb2 100644
--- a/src/main/java/org/openslx/imagemaster/crcchecker/ClassTest.java
+++ b/src/main/java/org/openslx/imagemaster/crcchecker/ClassTest.java
@@ -6,35 +6,36 @@ public class ClassTest
{
public static void main( String[] args ) throws IOException
{
- String filename = "/home/nils/win98-dp-demo-de.vmdk.r1";
- final int bs = 16 * 1024 * 1024;
+ if ( args.length != 2 ) {
+ System.out.println( "Usage: filename crcfilename" );
+ return;
+ }
+ String filename = args[0];
+ String filenameCrc = args[1];
+ final int blockSize = 16 * 1024 * 1024;
- CRCFile f = new CRCFile( filename.concat( ".crc" ) );
- System.out.println( f.getMasterSum() );
+ CRCFile f = new CRCFile( filenameCrc );
+ System.out.println( "Master sum: '" + f.getMasterSum() + "'" );
System.out.println( f.getCrcSums() );
- System.out.println( f.isValid() );
-
- System.out.println( CRCFile.sumsAreValid( f.getCrcSums() ) );
-
- ImageFile i = new ImageFile( filename, bs );
-
- CRCChecker c = new CRCChecker( i, f );
- System.out.println( c.checkBlock( 0 ) );
- System.out.println( c.checkBlock( 1 ) );
- System.out.println( c.checkBlock( 2 ) );
- System.out.println( c.checkBlock( 3 ) );
- System.out.println( c.checkBlock( 4 ) );
- System.out.println( c.checkBlock( 5 ) );
- System.out.println( c.checkBlock( 6 ) );
- System.out.println( c.checkBlock( 7 ) );
- System.out.println( c.checkBlock( 8 ) );
- System.out.println( c.checkBlock( 9 ) );
- System.out.println( c.checkBlock( 10 ) );
- System.out.println( c.checkBlock( 11 ) );
- System.out.println( c.checkBlock( 12 ) );
- System.out.println( c.checkBlock( 13 ) );
- System.out.println( c.checkBlock( 14 ) );
- System.out.println( c.checkBlock( 15 ) );
- c.done();
+ System.out.println( "CRC file is '" + ( ( f.isValid() ) ? "valid" : "invalid" ) + "'" );
+
+ ImageFile imageFile = new ImageFile( filename, blockSize );
+ CRCChecker crcFile = new CRCChecker( imageFile, f );
+
+ int blocks = getNumberOfBlocks( imageFile.length(), blockSize );
+ for ( int i = 0; i < blocks; i++ ) {
+ System.out.println( "Block\t" + i + "\tis '" + ( ( crcFile.checkBlock( i ) ) ? "valid" : "invalid" ) + "'" );
+ }
+
+ crcFile.done();
}
+
+ public static int getNumberOfBlocks( long fileSize, int blockSize )
+ {
+ int blocks = (int) ( fileSize / blockSize );
+ if ( fileSize % blockSize != 0 )
+ blocks++;
+ return blocks;
+ }
+
}
diff --git a/src/main/java/org/openslx/imagemaster/crcchecker/ImageFile.java b/src/main/java/org/openslx/imagemaster/crcchecker/ImageFile.java
index 13bb0fd..9c77984 100644
--- a/src/main/java/org/openslx/imagemaster/crcchecker/ImageFile.java
+++ b/src/main/java/org/openslx/imagemaster/crcchecker/ImageFile.java
@@ -44,7 +44,7 @@ public class ImageFile
}
file.seek( (long)block * blockSize );
-
+
return file.read( array );
}
@@ -60,8 +60,11 @@ public class ImageFile
public void close()
{
try {
+ if ( file == null )
+ return;
file.close();
file = null;
- } catch ( IOException e ) {/* Can't do anything about it.*/}
+ } catch ( IOException e ) {/* Can't do anything about it.*/
+ }
}
}