#19 Fixed possible hard Crash when scanning files.

This commit is contained in:
gjefferyes
2015-09-16 20:09:54 -05:00
parent 5107b5b850
commit b6be1a9ec1

View File

@@ -26,11 +26,7 @@ namespace ROMVault2.SupportedFiles.Files
bSHA1 = null;
crc = null;
Stream ds;
int errorCode = IO.FileStream.OpenFileRead(filename, out ds);
if (errorCode != 0)
return errorCode;
Stream ds=null;
CRC32Hash crc32 = new CRC32Hash();
MD5 md5 = null;
@@ -38,24 +34,39 @@ namespace ROMVault2.SupportedFiles.Files
SHA1 sha1 = null;
if (testDeep) sha1 = SHA1.Create();
long sizetogo = ds.Length;
while (sizetogo > 0)
try
{
int sizenow = sizetogo > Buffersize ? Buffersize : (int)sizetogo;
int errorCode = IO.FileStream.OpenFileRead(filename, out ds);
if (errorCode != 0)
return errorCode;
ds.Read(Buffer, 0, sizenow);
crc32.TransformBlock(Buffer, 0, sizenow, null, 0);
if (testDeep) md5.TransformBlock(Buffer, 0, sizenow, null, 0);
if (testDeep) sha1.TransformBlock(Buffer, 0, sizenow, null, 0);
sizetogo -= sizenow;
long sizetogo = ds.Length;
while (sizetogo > 0)
{
int sizenow = sizetogo > Buffersize ? Buffersize : (int)sizetogo;
ds.Read(Buffer, 0, sizenow);
crc32.TransformBlock(Buffer, 0, sizenow, null, 0);
if (testDeep) md5.TransformBlock(Buffer, 0, sizenow, null, 0);
if (testDeep) sha1.TransformBlock(Buffer, 0, sizenow, null, 0);
sizetogo -= sizenow;
}
crc32.TransformFinalBlock(Buffer, 0, 0);
if (testDeep) md5.TransformFinalBlock(Buffer, 0, 0);
if (testDeep) sha1.TransformFinalBlock(Buffer, 0, 0);
ds.Close();
}
catch
{
if (ds != null)
ds.Close();
return 0x17;
}
crc32.TransformFinalBlock(Buffer, 0, 0);
if (testDeep) md5.TransformFinalBlock(Buffer, 0, 0);
if (testDeep) sha1.TransformFinalBlock(Buffer, 0, 0);
ds.Close();
crc = crc32.Hash;
if (testDeep) bMD5 = md5.Hash;