Fix for bug 216474 - Browser crashes in password manager. Ensure that we don't crash or overwrite variables used to hold valid password data fields with null. r=bryner
git-svn-id: svn://10.0.0.236/trunk@146147 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
6a3e83bfd9
commit
d92ce84202
@ -621,21 +621,26 @@ nsPasswordManager::OnStateChange(nsIWebProgress* aWebProgress,
|
||||
|
||||
nsCOMPtr<nsIForm> form = do_QueryInterface(formNode);
|
||||
SignonDataEntry* firstMatch = nsnull;
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> userField, passField;
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> userField, passField;
|
||||
nsCOMPtr<nsIDOMHTMLInputElement> temp;
|
||||
|
||||
for (SignonDataEntry* e = hashEnt->head; e; e = e->next) {
|
||||
|
||||
nsCOMPtr<nsISupports> foundNode;
|
||||
form->ResolveName(e->userField, getter_AddRefs(foundNode));
|
||||
userField = do_QueryInterface(foundNode);
|
||||
|
||||
if (!userField)
|
||||
form->ResolveName(e->userField, getter_AddRefs(foundNode));
|
||||
temp = do_QueryInterface(foundNode);
|
||||
|
||||
if (temp)
|
||||
userField = temp;
|
||||
else
|
||||
continue;
|
||||
|
||||
form->ResolveName(e->passField, getter_AddRefs(foundNode));
|
||||
passField = do_QueryInterface(foundNode);
|
||||
|
||||
if (!passField)
|
||||
form->ResolveName(e->passField, getter_AddRefs(foundNode));
|
||||
temp = do_QueryInterface(foundNode);
|
||||
|
||||
if (temp)
|
||||
passField = temp;
|
||||
else
|
||||
continue;
|
||||
|
||||
if (firstMatch) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user