Commit c4b5d63d authored by Vadym Doroshenko's avatar Vadym Doroshenko Committed by Commit Bot

Fix in PasswordManager.

When new parsing for saving enabled PasswordManager::MoveOwnedSubmittedManager
tries to find submitted NewPasswordFormManager and if it's found it's moved.
As result there is nullptr in |form_managers_|. That would crash this function
if it's called twice. This CL makes this function behaves gracefully - to remove
nullptr.

Bug: 880229
Change-Id: I7f91a113dc33a6a2d0b483485a66657bec9e6d28
Reviewed-on: https://chromium-review.googlesource.com/1206591Reviewed-by: default avatarVaclav Brozek <vabr@chromium.org>
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589116}
parent 842b0fa9
......@@ -1169,10 +1169,16 @@ PasswordManager::MoveOwnedSubmittedManager() {
if (owned_submitted_form_manager_)
return std::move(owned_submitted_form_manager_);
for (std::unique_ptr<NewPasswordFormManager>& manager : form_managers_) {
if (manager->is_submitted())
return std::move(manager);
for (auto iter = form_managers_.begin(); iter != form_managers_.end();
++iter) {
if ((*iter)->is_submitted()) {
std::unique_ptr<NewPasswordFormManager> submitted_manager =
std::move(*iter);
form_managers_.erase(iter);
return std::move(submitted_manager);
}
}
NOTREACHED();
return nullptr;
}
......
......@@ -2625,6 +2625,7 @@ TEST_F(PasswordManagerTest, ProcessingOtherSubmissionTypes) {
EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_))
.WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save)));
manager()->OnPasswordFormSubmittedNoChecks(&driver_, submitted_form);
EXPECT_TRUE(manager()->form_managers().empty());
}
TEST_F(PasswordManagerTest, SubmittedGaiaFormWithoutVisiblePasswordField) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment