X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/fa7225c82381bac4432a6edf16f53b5370238d85..dd5fb164cf5b32c462296bc65e289e100f74b59a:/OSX/libsecurity_codesigning/lib/codedirectory.cpp?ds=sidebyside diff --git a/OSX/libsecurity_codesigning/lib/codedirectory.cpp b/OSX/libsecurity_codesigning/lib/codedirectory.cpp index b14b58ec..1fc4fddd 100644 --- a/OSX/libsecurity_codesigning/lib/codedirectory.cpp +++ b/OSX/libsecurity_codesigning/lib/codedirectory.cpp @@ -292,21 +292,19 @@ CodeDirectory::HashAlgorithm CodeDirectory::bestHashOf(const HashAlgorithms &typ void CodeDirectory::multipleHashFileData(FileDesc fd, size_t limit, CodeDirectory::HashAlgorithms types, void (^action)(HashAlgorithm type, DynamicHash* hasher)) { assert(!types.empty()); - vector > hashers; + map > hashes; for (auto it = types.begin(); it != types.end(); ++it) { if (CodeDirectory::viableHash(*it)) - hashers.push_back(CodeDirectory::hashFor(*it)); + hashes[*it] = CodeDirectory::hashFor(*it); } scanFileData(fd, limit, ^(const void *buffer, size_t size) { - unsigned n = 0; - for (auto it = types.begin(); it != types.end(); ++it, ++n) { - hashers[n]->update(buffer, size); + for (auto it = hashes.begin(); it != hashes.end(); ++it) { + it->second->update(buffer, size); } }); CFRef result = makeCFMutableDictionary(); - unsigned n = 0; - for (auto it = types.begin(); it != types.end(); ++it, ++n) { - action(*it, hashers[n]); + for (auto it = hashes.begin(); it != hashes.end(); ++it) { + action(it->first, it->second); } }