]> git.sesse.net Git - freerainbowtables/blobdiff - Client Applications/rcracki_mt/RTI2Reader.cpp
(C)
[freerainbowtables] / Client Applications / rcracki_mt / RTI2Reader.cpp
index abd855076517797a322f22c81be219e749963112..54538986c009b478c56265a66f991f9dcbe679a9 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright 2010 Martin Westergaard Jørgensen <martinwj2005@gmail.com>
  * Copyright 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>
- * Copyright 2010 James Nobis <frt@quelrod.net>
+ * Copyright 2010, 2011 James Nobis <frt@quelrod.net>
  *
  * This file is part of rcracki_mt.
  *
@@ -48,7 +48,11 @@ RTI2Reader::RTI2Reader(string Filename)
        long len = GetFileLen(pFileIndex);
        fseek(pFileIndex, 0, SEEK_SET);
 
-       m_pIndex = new unsigned char[len];
+       m_pIndex = new (nothrow) unsigned char[len];
+       if(m_pIndex == NULL) {
+               printf("Error allocating %ld MB memory for index in RTI2Reader::RTI2Reader()", len / (1024 * 1024));
+               exit(-2);
+       }
        if(fread(m_pIndex, 1, len, pFileIndex) != (unsigned long)len)
        {
                printf("Error while reading index file");
@@ -67,7 +71,7 @@ RTI2Reader::RTI2Reader(string Filename)
        fseek(m_pFile, 0, SEEK_SET);
        if(len % m_chainsizebytes > 0)
        {
-               printf("Invalid filesize %ld\n", len);
+               printf("Invalid filesize %lu\n", len);
                return;
        }
        
@@ -81,7 +85,7 @@ RTI2Reader::~RTI2Reader(void)
 
 }
 
-unsigned int RTI2Reader::GetChainsLeft()
+uint32 RTI2Reader::GetChainsLeft()
 {
        long len = GetFileLen(m_pFile);
        return len / m_chainsizebytes - m_chainPosition;
@@ -101,6 +105,7 @@ int RTI2Reader::ReadChains(unsigned int &numChains, RainbowChainO *pData)
        
        while(true) // Fast forward to current position
        {
+               /// XXX
                // ALERT: Possible problem here if m_indexrowsizebytes > 1 as pNumChains is a unsigned char.
                unsigned int NumChainsInRow = (unsigned int)*(pNumChains + indexRow * m_indexrowsizebytes);
                if(m_indexrowsizebytes > 1)