| 309 | } |
| 310 | |
| 311 | static DWORD LoadHashArray( |
| 312 | PCASC_BLOB pBlob, |
| 313 | const char * szLinePtr, |
| 314 | const char * szLineEnd, |
| 315 | size_t HashCount) |
| 316 | { |
| 317 | DWORD dwErrCode = ERROR_NOT_ENOUGH_MEMORY; |
| 318 | |
| 319 | // Allocate the blob buffer |
| 320 | pBlob->cbData = (DWORD)(HashCount * MD5_HASH_SIZE); |
| 321 | pBlob->pbData = CASC_ALLOC<BYTE>(pBlob->cbData); |
| 322 | if(pBlob->pbData != NULL) |
| 323 | { |
| 324 | LPBYTE pbBuffer = pBlob->pbData; |
| 325 | |
| 326 | for(size_t i = 0; i < HashCount; i++) |
| 327 | { |
| 328 | // Capture the hash value |
| 329 | szLinePtr = CaptureSingleHash(szLinePtr, szLineEnd, pbBuffer, MD5_HASH_SIZE); |
| 330 | if(szLinePtr == NULL) |
| 331 | return ERROR_BAD_FORMAT; |
| 332 | |
| 333 | // Move buffer |
| 334 | pbBuffer += MD5_HASH_SIZE; |
| 335 | } |
| 336 | |
| 337 | dwErrCode = ERROR_SUCCESS; |
| 338 | } |
| 339 | |
| 340 | return dwErrCode; |
| 341 | } |
| 342 | |
| 343 | static DWORD LoadMultipleHashes(PCASC_BLOB pBlob, const char * szLineBegin, const char * szLineEnd) |
| 344 | { |
no test coverage detected