Fix cache errors from files with same length/murmur2 fingerprint

This commit is contained in:
comp500 2023-06-23 19:00:35 +01:00
parent d018d7e780
commit dd5520e471

View File

@ -404,15 +404,18 @@ func (c *CacheIndex) rehashFile(cacheHash string, hashFormat string) (string, er
}
func (c *CacheIndex) NewHandleFromHashes(hashes map[string]string) (*CacheIndexHandle, bool) {
for hashFormat, hash := range hashes {
handle := c.GetHandleFromHash(hashFormat, hash)
if handle != nil {
// Add hashes to handle
for hashFormat2, hash2 := range hashes {
handle.Hashes[hashFormat2] = strings.ToLower(hash2)
}
return handle, true
// Ensure hashes contains the cache hash format
if _, ok := hashes[cacheHashFormat]; !ok {
panic("NewHandleFromHashes didn't get any value for " + cacheHashFormat)
}
// Only compare with the cache hash format - other hashes might be insecure or likely to collide
handle := c.GetHandleFromHash(cacheHashFormat, hashes[cacheHashFormat])
if handle != nil {
// Add hashes to handle
for hashFormat2, hash2 := range hashes {
handle.Hashes[hashFormat2] = strings.ToLower(hash2)
}
return handle, true
}
i := c.nextHashIdx
c.nextHashIdx += 1