Closed Bug 182490 Opened 22 years ago Closed 22 years ago

New password manager is ignoring valid password entries

Categories

(SeaMonkey :: Passwords & Permissions, defect, P1)

x86
All
defect

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.3alpha

People

(Reporter: craig, Assigned: darin.moz)

References

()

Details

(Keywords: regression)

Attachments

(1 file)

User-Agent: Mozilla/5.0 (Windows; U; Win95; en-US; rv:1.2) Gecko/20021126 Build Identifier: Mozilla/5.0 (Windows; U; Win95; en-US; rv:1.2) Gecko/20021126 If you have N different username/password combinations for a site, the new password manager is effectively discarding N-1 of them! Reproducible: Always Steps to Reproduce: 1. Use Mozilla 1.2beta. Username/password stored as www.example.org/p1, etc 2. Install Mozilla 1.2. Go to a site. All possibilities listed. 3. Having logged in once, try to log in again. Actual Results: Mozilla automatically fills in only the previously successful data. Expected Results: Offered all the possible choices as before. Format has changed from www.example.org/p1, etc, to http://www.example.org/p1. Logging in to a site once causes the data to be converted FOR THAT ONE DATA PAIR ALONE, causing all others to be ignored from then on. There should either be (have been): a) A program run at install time to change the format of all entries or b) Mozilla should look up both data formats to get all relevant username/password pairs or c) The format conversion that's performed now should be performed on all data matching that site
This is a side effect of darin's patch in bug 175495. Reassigning.
Assignee: morse → darin
Confirming since the symptom sounds like a logical consequence of the above-mentioned patch, even though I haven't actually tested it.
Status: UNCONFIRMED → NEW
Ever confirmed: true
*** Bug 182859 has been marked as a duplicate of this bug. ***
ouch! working on a fix.
Severity: major → critical
Status: NEW → ASSIGNED
Flags: blocking1.3a+
Keywords: regression
Priority: -- → P1
Target Milestone: --- → mozilla1.3alpha
*** Bug 183524 has been marked as a duplicate of this bug. ***
Attached patch v1 patchSplinter Review
this is a rather ugly patch, but it solves the bug. i tried my best to only add code for the case in which legacy password entries exist. my basic solution is to build a composite si_SignonURLStruct at the top of si_GetUser and then release this structure before exiting the function. this composite URL struct holds all of the candidate users from both the "new" entries as well as the "legacy" entries. before this solution, i tried hacking si_GetUser to iterate over two separate lists, but that got very complicated because of the fact that the selected user must be moved to the front of the list, and if the selected user is a legacy user, then it cannot be promoted to the "new" user list until the user has pressed the login button. because si_GetUser is called several times (to access various fields), we have to remember the fact that a user was chosen. so, it would have required significant changes to existing code paths to fix this bug. for this reason, i opted for a much less intrusive solution. the function si_GetCompositeURL replaces the si_GetURL call from si_GetUser. and before si_GetUser returns it calls si_ReleaseCompositeURL. if there aren't any legacy password entries then si_GetCompositeURL becomes equivalent to si_GetURL and si_ReleaseCompositeURL does nothing.
oh, and i setup a netscape-internal testcase at: http://unagi.mcom.com/bugs/bug_182490/test.html just run an older version of mozilla (like netscape 7.0) to populate your password manager. take mozilla 1.2 (or any recent nightly build) and you should be able to confirm this bug. with this patch, this testcase works as expected.
Attachment #108290 - Flags: superreview?(dveditz)
Attachment #108290 - Flags: review?(morse)
Attachment #108290 - Flags: review?(morse) → review+
Attachment #108290 - Flags: superreview?(dveditz) → superreview?(jst)
Comment on attachment 108290 [details] [diff] [review] v1 patch +PRIVATE si_SignonCompositeURLStruct * si_composite_url=0; I guess I don't really understand how this is used, but it's not clear to me that it's ok to have this global state, what if you're simultanously working with multiple sites using the password manager? Will this code do the right thing then, if so, then all is well, if not, this needs to change. Also, I'd really like to see the name of that global variable reflect the fact that it's a global variable. - In si_ReleaseCompositeURL(): ... + si_composite_url->primaryUrl = NULL; + si_composite_url->legacyUrl = NULL; + si_composite_url->chosen_user = NULL; + si_composite_url->signonUser_list.Clear(); + + delete si_composite_url; At least the clearing of signonUser_list is unnecessary code here, the destructor that will run when you call delete will do that for you, no? And do you really need to null out those other members here? Other than that this looks fine at the code level, but I don't really know the first thing about this code so I can't really speak for what this change really does. sr=jst
Attachment #108290 - Flags: superreview?(jst) → superreview+
i spoke with jst via IRC. the global state variable is OK, or at least neither of us could come up with a way that it would cause trouble. as for the cleanup code before calling "delete", i'll clean that up when i checkin.
Attachment #108290 - Flags: approval1.3a?
Comment on attachment 108290 [details] [diff] [review] v1 patch a=asa for checkin to 1.3a
Attachment #108290 - Flags: approval1.3a? → approval1.3a+
fixed-on-trunk
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
this fix seems to have caused bug 184571, which is a bug that breaks password management in mailnews in strange ways.
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: