in google_guest_agent/windows_accounts.go [414:451]
func compareAccounts(newKeys metadata.WindowsKeys, oldStrKeys []string) metadata.WindowsKeys {
if len(newKeys) == 0 {
return nil
}
if len(oldStrKeys) == 0 {
return newKeys
}
var oldKeys metadata.WindowsKeys
for _, s := range oldStrKeys {
var key metadata.WindowsKey
if err := json.Unmarshal([]byte(s), &key); err != nil {
if !slices.Contains(badReg, s) {
logger.Errorf("Bad windows key from registry: %s", err)
badReg = append(badReg, s)
}
continue
}
oldKeys = append(oldKeys, key)
}
var toAdd metadata.WindowsKeys
for _, key := range newKeys {
if func(key metadata.WindowsKey, oldKeys metadata.WindowsKeys) bool {
for _, oldKey := range oldKeys {
if oldKey.UserName == key.UserName &&
oldKey.Modulus == key.Modulus &&
oldKey.ExpireOn == key.ExpireOn {
return false
}
}
return true
}(key, oldKeys) {
toAdd = append(toAdd, key)
}
}
return toAdd
}