]> git.sesse.net Git - freerainbowtables/blobdiff - Client Applications/rcracki_mt/CrackEngine.cpp
backport rcracki_mt-0.6.5.1 rti2 fixes
[freerainbowtables] / Client Applications / rcracki_mt / CrackEngine.cpp
index 8adc18274a2e76efa33d3e59ac8c9861daeaa64f..1e00fce729b8a17b08db54b1293b762c6849b08a 100644 (file)
@@ -1064,16 +1064,14 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs)
 \r
                                                // Load table chunk\r
                                                if (debug) printf("reading...\n");\r
-                                               unsigned int nDataRead = 0;\r
+                                               unsigned int nDataRead = 0, nDataToRead = 0;\r
                                                gettimeofday( &tv, NULL );\r
                                                if ( doRti2Format )\r
                                                {\r
-                                                       nDataRead = nAllocatedSize / 16;\r
+                                                       nDataToRead = nAllocatedSize / 16;\r
+                                                       nDataRead = nDataToRead;\r
                                                        pReader->ReadChains(nDataRead, pChain);\r
                                                        nDataRead *= 8; // Convert from chains read to bytes\r
-\r
-                                                       if ( nDataRead == 0 ) // No more data\r
-                                                               break;\r
                                                }\r
                                                else\r
                                                {\r
@@ -1138,6 +1136,13 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs)
                                                // Already finished?\r
                                                if (!hs.AnyHashLeftWithLen(CChainWalkContext::GetHashLen()))\r
                                                        break;\r
+\r
+                                               // finished the current table\r
+                                               if( doRti2Format && nDataToRead > (nDataRead / 8) )\r
+                                               {\r
+                                                       delete pReader;\r
+                                                       break;\r
+                                               }\r
                                        }\r
                                }\r
                                else\r