Closed
Bug 44299
Opened 25 years ago
Closed 25 years ago
Inappropriate prompt for master password
Categories
(Core Graveyard :: Security: UI, defect, P3)
Tracking
(Not tracked)
VERIFIED
FIXED
People
(Reporter: morse, Assigned: thayes0993)
References
Details
(Whiteboard: [nsbeta3+])
Under the following scenario I get a prompt for the master password after I have
just changed the master password:
1. Create a new profile and bring up the browser
2. Go to http://people.netscape.com/morse/password.htm
3. Fill in any arbitrary username and password, then submit form
4. Answer "yes" to the "do you want to save" dialog
5. Dismiss the encryption-disclaimer dialog
6. Dismiss the security-alert dialog
7. From the menu select tasks->privacy->password-manager->encrypt
8. PSM dialog for creating master password appears. Enter password and press OK
9. Security alert appears (this is bug 44044). Click OK
10. Security alert appears again (more bug 44044). Click OK again.
11. Exit and reenter browser
12. From the menu select tasks->privacy->password-manager->change-password
13. Change of password dialog comes up (contrast this to bug 44291).
14. Fill in the password fields and click OK
Before the change dialog gets dismissed, another dialog comes up asking you to
enter your master password. This dialog is inappropriate!
Assignee | ||
Updated•25 years ago
|
Status: NEW → ASSIGNED
Reporter | ||
Comment 1•25 years ago
|
||
Can no longer demonstrate this bug. Because of bug 50731 we now hang after
performing step 7. Stacktrace at point of hang is included in bug 50731.
Depends on: 50731
Reporter | ||
Comment 2•25 years ago
|
||
OK, 50731 is out of the way so I can demonstrate this bug once again. Here is
the stacktrace when the inappropriate prompt for master password comes up:
nsXULWindow::ShowModal(nsXULWindow * const 0x039b3a40) line 229 + 31 bytes
nsWebShellWindow::ShowModal(nsWebShellWindow * const 0x039b3a40) line 1101
nsChromeTreeOwner::ShowModal(nsChromeTreeOwner * const 0x039b4fd0) line 182
GlobalWindowImpl::OpenInternal(GlobalWindowImpl * const 0x01b09260, JSContext *
0x01b09060, long * 0x03210ecc, unsigned int 4, int 1, nsIDOMWindow * *
0x0012cc58) line 2972
GlobalWindowImpl::OpenDialog(GlobalWindowImpl * const 0x01b09264, JSContext *
0x01b09060, long * 0x03210ecc, unsigned int 4, nsIDOMWindow * * 0x0012cc58) line
1912
nsCommonDialogs::DoDialog(nsCommonDialogs * const 0x02537df0, nsIDOMWindow *
0x01b09264, nsIDialogParamBlock * 0x039af8a0, const char * 0x00e97668) line 453
+ 49 bytes
nsCommonDialogs::UniversalDialog(nsCommonDialogs * const 0x02537df0,
nsIDOMWindow * 0x01b09264, const unsigned short * 0x00000000, const unsigned
short * 0x039af900, const unsigned short * 0x039b8d50, const unsigned short *
0x00000000, const unsigned short * 0x00000000, const unsigned short *
0x00000000, const unsigned short * 0x00000000, const unsigned short *
0x00000000, ...) lin
nsDOMWindowPrompter::UniversalDialog(nsDOMWindowPrompter * const 0x039bed20,
const unsigned short * 0x00000000, const unsigned short * 0x039af900, const
unsigned short * 0x039b8d50, const unsigned short * 0x00000000, const unsigned
short * 0x00000000, const unsigned short * 0x00000000, const unsigned short *
0x00000000, const unsigned short * 0x00000000, ...) line 1961 + 110 bytes
si_CheckGetPassword(unsigned short * * 0x0012d2d4, const unsigned short *
0x00000000, const unsigned short * 0x039b8d50, nsIPrompt * 0x039bed20, unsigned
int 0, int * 0x0012d000) line 422 + 60 bytes
SINGSIGN_PromptPassword(const unsigned short * 0x00000000, const unsigned short
* 0x039b8d50, unsigned short * * 0x0012d2d4, const char * 0x0012d0e0, nsIPrompt
* 0x039bed20, int * 0x0012d2e4, unsigned int 0) line 2321 + 32 bytes
nsSingleSignOnPrompt::PromptPassword(nsSingleSignOnPrompt * const 0x039bd0d0,
const unsigned short * 0x00000000, const unsigned short * 0x039b8d50, const
unsigned short * 0x0012d234, unsigned int 0, unsigned short * * 0x0012d2d4, int
* 0x0012d2e4) line 480 + 47 bytes
nsNetSupportDialog::PromptPassword(nsNetSupportDialog * const 0x03bbc290, const
unsigned short * 0x00000000, const unsigned short * 0x039b8d50, const unsigned
short * 0x0012d234, unsigned int 0, unsigned short * * 0x0012d2d4, int *
0x0012d2e4) line 187 + 47 bytes
PromptUserCallback(void * 0x00000000, char * 0x039b8e80, int 0) line 323 + 75
bytes
CMT_ServicePasswordRequest(_CMT_CONTROL * 0x037185e0, CMTItemStr * 0x0012d3f8)
line 76 + 23 bytes
CMT_DispatchEvent(_CMT_CONTROL * 0x037185e0, CMTItemStr * 0x0012d3f8) line 461 +
13 bytes
CMT_ReadMessageDispatchEvents(_CMT_CONTROL * 0x037185e0, CMTItemStr *
0x0012d3f8) line 274 + 13 bytes
CMT_SendMessage(_CMT_CONTROL * 0x037185e0, CMTItemStr * 0x0012d3f8) line 312 +
13 bytes
tmp_SendMessage(_CMT_CONTROL * 0x037185e0, CMTItemStr * 0x0012d3f8) line 77 + 13
bytes
CMT_SDRDecrypt(_CMT_CONTROL * 0x037185e0, void * 0x00000000, const unsigned char
* 0x039bd170, unsigned long 52, unsigned char * * 0x0012d478, unsigned long *
0x0012d450) line 173 + 13 bytes
nsSecretDecoderRing::Decrypt(nsSecretDecoderRing * const 0x03707d60, unsigned
char * 0x039bd170, int 52, unsigned char * * 0x0012d478, int * 0x0012d484) line
126 + 27 bytes
nsSecretDecoderRing::DecryptString(nsSecretDecoderRing * const 0x03707d60, const
char * 0x039bd1e0, char * * 0x0012d4c0) line 179 + 28 bytes
DecryptString(const char * 0x039bd1e0, char * & 0x00000000) line 1001 + 26 bytes
Wallet_Decrypt(const nsString &
{"MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECC/PR+FWBaZFBAgxdOuGOPkAfA=="},
nsString & {""}) line 1085 + 13 bytes
Wallet_Decrypt2(const nsString &
{"MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECC/PR+FWBaZFBAgxdOuGOPkAfA=="},
nsString & {""}) line 1125 + 13 bytes
si_Decrypt(const nsString &
{"MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECC/PR+FWBaZFBAgxdOuGOPkAfA=="},
nsString & {""}) line 627 + 13 bytes
si_CompareEncryptedToCleartext(const nsString &
{"MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECC/PR+FWBaZFBAgxdOuGOPkAfA=="},
const nsString & {"steve"}) line 633 + 16 bytes
si_GetURLAndUserForChangeForm(nsIPrompt * 0x03bbc290, const nsString &
{"steve"}) line 1079 + 35 bytes
si_RememberSignonData(nsIPrompt * 0x03bbc290, const char * 0x039bd030,
nsVoidArray * 0x039bc950, nsIDOMWindow * 0x03a9fba4) line 1967 + 19 bytes
SINGSIGN_RememberSignonData(nsIPrompt * 0x03bbc290, const char * 0x039bef70,
nsVoidArray * 0x039bc950, nsIDOMWindow * 0x03a9fba4) line 2025 + 21 bytes
WLLT_OnSubmit(nsIContent * 0x03b206fc, nsIDOMWindow * 0x03a9fba4) line 3604 + 35
bytes
nsWalletlibService::Notify(nsWalletlibService * const 0x024c6938, nsIContent *
0x03b206fc, nsIDOMWindow * 0x03a9fba4, nsIURI * 0x039bbfa0) line 174 + 13 bytes
nsFormFrame::OnSubmit(nsFormFrame * const 0x032f9e18, nsIPresContext *
0x03a9ff00, nsIFrame * 0x00000000) line 874 + 63 bytes
nsHTMLFormElement::Submit(nsHTMLFormElement * const 0x03b206f0) line 303 + 23
bytes
HTMLFormElementSubmit(JSContext * 0x03a9f9a0, JSObject * 0x032b4c20, unsigned
int 0, long * 0x032d3f6c, long * 0x0012e6d0) line 408 + 15 bytes
js_Invoke(JSContext * 0x03a9f9a0, unsigned int 0, unsigned int 0) line 716 + 23
bytes
js_Interpret(JSContext * 0x03a9f9a0, long * 0x0012f118) line 2517 + 15 bytes
js_Execute(JSContext * 0x03a9f9a0, JSObject * 0x031f23d0, JSScript * 0x039b7b50,
JSFunction * 0x00000000, JSStackFrame * 0x00000000, unsigned int 0, long *
0x0012f118) line 887 + 13 bytes
JS_EvaluateUCScriptForPrincipals(JSContext * 0x03a9f9a0, JSObject * 0x031f23d0,
JSPrincipals * 0x035ca430, const unsigned short * 0x0012f1d4, unsigned int 11,
const char * 0x03c8c6b0, unsigned int 29, long * 0x0012f118) line 3100 + 27
bytes
nsJSContext::EvaluateString(nsJSContext * const 0x03a9fb30, const
basic_nsAReadableString<unsigned short> & {...}, void * 0x031f23d0, nsIPrincipal
* 0x035ca42c, const char * 0x03c8c6b0, unsigned int 29, const char * 0x0030e5f8,
basic_nsAWritableString<unsigned short> & {...}, int * 0x0012f1b8) line 538 + 68
bytes
GlobalWindowImpl::RunTimeout(nsTimeoutImpl * 0x03c8ca70) line 3657 + 97 bytes
nsGlobalWindow_RunTimeout(nsITimer * 0x03c8c650, void * 0x03c8ca70) line 3911 +
15 bytes
nsTimer::Fire() line 194 + 17 bytes
nsTimerManager::FireNextReadyTimer(nsTimerManager * const 0x01b6a1f0, unsigned
int 0) line 117
nsAppShell::GetNativeEvent(nsAppShell * const 0x039de4e0, int & 1, void * &
0x01d71ff0 msg) line 161
nsXULWindow::ShowModal(nsXULWindow * const 0x0374c170) line 229 + 31 bytes
nsWebShellWindow::ShowModal(nsWebShellWindow * const 0x0374c170) line 1101
nsContentTreeOwner::ShowModal(nsContentTreeOwner * const 0x03a3aeb0) line 184
GlobalWindowImpl::OpenInternal(GlobalWindowImpl * const 0x01b09260, JSContext *
0x01b09060, long * 0x03210ec0, unsigned int 3, int 0, nsIDOMWindow * *
0x0012fa60) line 2972
GlobalWindowImpl::Open(GlobalWindowImpl * const 0x01b09264, JSContext *
0x01b09060, long * 0x03210ec0, unsigned int 3, nsIDOMWindow * * 0x0012fa60) line
1903
nsPSMUIHandlerImpl::DisplayURI(nsPSMUIHandlerImpl * const 0x0371bfa0, int 500,
int 450, int 1, const char * 0x03718870) line 104
XPTC_InvokeByIndex(nsISupports * 0x0371bfa0, unsigned int 3, unsigned int 4,
nsXPTCVariant * 0x0371f7a0) line 139
EventHandler(PLEvent * 0x0371f810) line 508 + 41 bytes
PL_HandleEvent(PLEvent * 0x0371f810) line 587 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00b584c0) line 528 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x0001061c, unsigned int 49484, unsigned int 0,
long 11896000) line 1043 + 9 bytes
USER32! 77e71268()
00b584c0()
Reporter | ||
Comment 3•25 years ago
|
||
OK, here's what's happening. The cartman change-password dialog is actually a
webpage on a local server. So when you click on OK, you are submitting a form
and that will trigger all the onsubmit handlers to fire. There is such a
handler in wallet and that needs to decrypt a value. So it makes a call into
the psm module. But I guess the changed-password hasn't taken effect yet (and
wallet already forced a logout from the previous password) so the psm module
puts up a prompt for a password.
Note that bug 44044 (security-alert dialogs coming up at the wrong time) were
also caused by forms being submitted to the local cartman server. David Drinan
has indicated that he has a fix for that bug which he will check in momentarily.
If his fix involves supressing the onsubmit handlers, it will also take care of
this bug. But if his fix is more localized, then a local fix for this bug will
need to be implemented as well.
Reporter | ||
Comment 4•25 years ago
|
||
If ddrinan's fix for bug 44044 is too localized, and there is no convenient
place in cartman to fix the current bug, then here is a patch that can be
applied to the onsubmit handler in wallet that will prevent this inappropriate
master-password prompt for occuring:
Index: wallet.cpp
===================================================================
RCS file: /cvsroot/mozilla/extensions/wallet/src/wallet.cpp,v
retrieving revision 1.257
diff -c -r1.257 wallet.cpp
*** wallet.cpp 2000/08/29 04:29:01 1.257
--- wallet.cpp 2000/08/30 02:41:22
***************
*** 3467,3472 ****
--- 3467,3477 ----
}
(void)docURL->GetSpec(&URLName);
wallet_GetHostFile(docURL, strippedURLNameAutoString);
+ if (strippedURLNameAutoString.EqualsWithConversion("127.0.0.1/get")) {
+ /* this is a submit to a cartman dialog -- don't capture it */
+ nsCRT::free(URLName);
+ return;
+ }
strippedURLName = strippedURLNameAutoString.ToNewCString();
/* get to the form elements */
Comment 5•25 years ago
|
||
marking nsbeta3+ and leaving priority as p3. This one we should fix if we have
time, but not hold for it.
Whiteboard: [nsbeta3+]
Reporter | ||
Comment 6•25 years ago
|
||
Fixed.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Comment 8•24 years ago
|
||
Mass changing Security:Crypto to PSM
Component: Security: Crypto → Client Library
Product: Browser → PSM
Version: other → 2.1
Comment 9•24 years ago
|
||
Mass changing Security:Crypto to PSM
Updated•8 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•