Avoid calling a removed observer in PersonalDataManager
PersonalDataManager::NotifyPersonalDataObserver will call OnPersonalDataChanged and often OnPersonalDataFinishedProfileTasks on PersonalDataManagerObserver. Trouble is that it does this in the same ObserverList loop. So if PersonalDataManagerObserver implementation of OnPersonalDataChanged calls PersonalDataManager::RemoveObserver(this) then it will still be called on OnPersonalDataFinishedProfileTasks. Worse, if PersonalDataManagerObserver deleted itself after removing itself as an observer you now have a use-after-free calling a virtual method on a destroyed object. There are not currently any PersonalDataManagerObserver implementations that I can find that has this problem. Bug: 959172 Change-Id: I2bb0a625f5c3a847c5d035ccc57b5fdb349366b8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1594529 Commit-Queue: Joel Klinghed <the_jk@opera.com> Reviewed-by:Parastoo Geranmayeh <parastoog@google.com> Cr-Commit-Position: refs/heads/master@{#656489}
Showing
Please register or sign in to comment