2
toolkit/components/passwordmgr/src/storage-Legacy.js | 6 +-
3
toolkit/components/passwordmgr/test/unit/data/signons-454708.txt | 10 +++
4
toolkit/components/passwordmgr/test/unit/test_storage_legacy_3.js | 26 ++++++++++
5
3 files changed, 41 insertions(+), 1 deletion(-)
7
Index: mozilla/toolkit/components/passwordmgr/src/storage-Legacy.js
8
===================================================================
9
--- mozilla.orig/toolkit/components/passwordmgr/src/storage-Legacy.js
10
+++ mozilla/toolkit/components/passwordmgr/src/storage-Legacy.js
12
var parseState = STATE.HEADER;
14
var nsLoginInfo = new Components.Constructor(
15
"@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo);
16
var processEntry = false;
19
var hasMore = lineStream.readLine(line);
20
- line.value = this._utfConverter.ConvertToUnicode(line.value);
22
+ line.value = this._utfConverter.ConvertToUnicode(line.value);
24
+ this.log("Bad UTF8 conversion: " + line.value);
30
if (line.value == "#2c") {
32
} else if (line.value == "#2d") {
34
Index: mozilla/toolkit/components/passwordmgr/test/unit/data/signons-454708.txt
35
===================================================================
37
+++ mozilla/toolkit/components/passwordmgr/test/unit/data/signons-454708.txt
43
+MDoEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECEnlbhAkNBbBBBCexD5eaffSLGH/ORiFlQ4X
45
+MDoEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECHmiTaseYjkkBBAA0ILJTFSa5CnlpD5PTEYR
49
Index: mozilla/toolkit/components/passwordmgr/test/unit/test_storage_legacy_3.js
50
===================================================================
51
--- mozilla.orig/toolkit/components/passwordmgr/test/unit/test_storage_legacy_3.js
52
+++ mozilla/toolkit/components/passwordmgr/test/unit/test_storage_legacy_3.js
55
LoginTest.checkStorageData(storage, [utfHost], [utfUser1, utfUser2]);
57
testdesc = "[flush and reload for verification]"
58
LoginTest.initStorage(storage, OUTDIR, "output-451155.txt");
59
LoginTest.checkStorageData(storage, [utfHost], [utfUser1, utfUser2]);
63
+ * ---------------------- Bug 454708 ----------------------
64
+ * Check that previous saved entries that are not valid UTF8
65
+ * are read without blowing up.
68
+/* ========== 16 ========== */
70
+testdesc = "ensure bogus UTF8 strings don't cause failures."
72
+var badHost = "https://FcK" + String.fromCharCode(0x8a) + ".jp";
73
+var bad8User = Cc["@mozilla.org/login-manager/loginInfo;1"].
74
+ createInstance(Ci.nsILoginInfo);
75
+bad8User.init(badHost, badHost, null,
76
+ "dummydude", "itsasecret", "put_user_here", "put_pw_here");
78
+storage = LoginTest.initStorage(INDIR, "signons-454708.txt",
79
+ OUTDIR, "output-454708.txt");
80
+LoginTest.checkStorageData(storage, [], [bad8User]);
82
+// The output file should contain valid UTF8 now, but the resulting
83
+// JS string value remains the same.
85
+testdesc = "[flush and reload for verification]"
86
+storage = LoginTest.reloadStorage(OUTDIR, "output-454708.txt");
87
+LoginTest.checkStorageData(storage, [], [bad8User]);
90
/* ========== end ========== */
92
throw ("FAILED in test #" + testnum + " -- " + testdesc + ": " + e);