So, looking a bit further, there are actually 2 issues.

The first is that xulrunner doesn't set the signon.rememberSignons pref to
true, which might have been the case in mozilla. This is understandable,
since the main use of xulrunner is supposed to be for embedding and that
all embedding applications don't have a profile directory to store the
password manager database and don't necessarily want to store the
passwords even when they have a profile directory.

That means kazehakase should set this preference to true, like it does
for some other preferences.

The second issue is that when signon.rememberSignons is false, it
still displays the checkbox to ask if the user want to save the
password.

Both issues are addresses by the attached patch.

Note that the 'if (aCheckValue)' replacing 'if (aCheckMsg)' is enough to
be sure it doesn't crash because aCheckValue and aCheckMsg are set
together at xulrunner level. If aCheckValue is null, that means that we
don't want the checkbox, and its label (aCheckMsg) is also NULL. On the
contrary, if aCheckValue points to a boolean for the check box to be
pre-checked or not, aCheckMsg also points to the message that should be
displayed as the checkbox label.

The setting of signon.rememberSignons allows the user to set it to false
if he prefers. He just needs to go to about:config and toggle its value.

岩井さん, if you want sponsorship for a -2 release, having worked on the
issue, I can sponsor an upload for you. Or maybe you'd prefer I just
NMUed.

Note that the package available on people.debian.org/~glandium/ has been
updated and was built with the attached patch.

Cheers

Mike
diff -u kazehakase-0.3.9/debian/patches/00list 
kazehakase-0.3.9/debian/patches/00list
--- kazehakase-0.3.9/debian/patches/00list
+++ kazehakase-0.3.9/debian/patches/00list
@@ -3,0 +4 @@
+50_passwordmgr
diff -u kazehakase-0.3.9/debian/changelog kazehakase-0.3.9/debian/changelog
--- kazehakase-0.3.9/debian/changelog
+++ kazehakase-0.3.9/debian/changelog
@@ -1,3 +1,14 @@
+kazehakase (0.3.9-1.1) unstable; urgency=low
+
+  * debian/patches/50_passwordmgr.dpatch: Fixed crasher in
+    GtkPromptService.cpp when signon.rememberSignons is not set, which
+    happens to be the case with xulrunner but not with mozilla.  Also
+    set it if not already user set. (closes:#380466)
+    Thanks to Gerfried Fuchs and Yavor Doganov for their help.
+  * debian/patches/00list: Updated accordingly
+
+ -- Mike Hommey <[EMAIL PROTECTED]>  Sat, 26 Aug 2006 11:16:06 +0200
+
 kazehakase (0.3.9-1) unstable; urgency=low
 
   * New upstream release.
only in patch2:
unchanged:
--- kazehakase-0.3.9.orig/debian/patches/50_passwordmgr.dpatch
+++ kazehakase-0.3.9/debian/patches/50_passwordmgr.dpatch
@@ -0,0 +1,45 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 50_passwordmgr.dpatch by  <[EMAIL PROTECTED]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixed crasher in GtkPromptService.cpp when signon.rememberSignons is 
not set,
+## DP: which happens to be the case with xulrunner but not with mozilla. Also 
set it
+## DP: if not already user set.
+## DP: Thanks to Gerfried Fuchs and Yavor Doganov for their help.
+
[EMAIL PROTECTED]@
+
+--- kazehakase/src/mozilla/GtkPromptService.cpp.orig   2006-08-26 
08:50:40.906614000 +0200
++++ kazehakase/src/mozilla/GtkPromptService.cpp        2006-08-26 
11:10:20.130282750 +0200
+@@ -344,7 +344,7 @@
+       kz_prompt_dialog_set_message_text(prompt, cText.get());
+       kz_prompt_dialog_set_user(prompt, cUser.get());
+       kz_prompt_dialog_set_password(prompt, cPass.get());
+-      if (aCheckMsg)
++      if (aCheckValue)
+       {
+               kz_prompt_dialog_set_check_message(prompt, cCheckMsg.get());
+               kz_prompt_dialog_set_check_value(prompt, *aCheckValue);
+--- kazehakase/src/mozilla/mozilla-prefs.cpp.orig      2006-08-26 
11:10:04.545308750 +0200
++++ kazehakase/src/mozilla/mozilla-prefs.cpp   2006-08-26 11:10:26.526682500 
+0200
+@@ -95,6 +95,7 @@
+       gboolean override = FALSE, use_proxy = FALSE;
+       gchar proxy_name[1024];
+       gboolean conf_exist = FALSE, use_proxy_exist = FALSE;
++      gboolean signon_remember;
+       KzProxyItem *item = NULL;
+ 
+       // set user agent name
+@@ -132,6 +133,12 @@
+               g_free(value);
+       }
+       
++      if (!mozilla_prefs_get_boolean("signon.rememberSignons", 
&signon_remember))
++      {
++              mozilla_prefs_set_boolean("signon.rememberSignons",
++                                       true);
++      }
++
+       use_proxy_exist = KZ_CONF_GET("Global", "use_proxy", use_proxy, BOOL);
+       
+       conf_exist = KZ_CONF_GET("Global", "proxy_name",

Reply via email to