Bug 1429490 - Since nsISerializationHelper.serializeToString may throw, catch the error to prevent loss of session data. r?ckerschb draft
authorMike de Boer <mdeboer@mozilla.com>
Thu, 18 Jan 2018 16:54:29 +0100
changeset 722184 ed3340ba9edaab9807ad70a3daba41f00d815459
parent 721592 41145d09cad5c4ca21539df9cb2c22f6f568e985
child 746549 55d489da00c05ce914027e3f985aa68de79c7b6a
push id96078
push usermdeboer@mozilla.com
push dateThu, 18 Jan 2018 15:55:28 +0000
reviewersckerschb
bugs1429490
milestone59.0a1
Bug 1429490 - Since nsISerializationHelper.serializeToString may throw, catch the error to prevent loss of session data. r?ckerschb MozReview-Commit-ID: GOAFT4CpVrR
toolkit/modules/sessionstore/Utils.jsm
--- a/toolkit/modules/sessionstore/Utils.jsm
+++ b/toolkit/modules/sessionstore/Utils.jsm
@@ -114,20 +114,27 @@ this.Utils = Object.freeze({
 
   /**
    * Serialize principal data.
    *
    * @param {nsIPrincipal} principal The principal to serialize.
    * @return {String} The base64 encoded principal data.
    */
   serializePrincipal(principal) {
-    if (!principal)
-      return null;
+    let serializedPrincipal = null;
 
-    return serializationHelper.serializeToString(principal);
+    try {
+      if (principal) {
+        serializedPrincipal = serializationHelper.serializeToString(principal);
+      }
+    } catch (e) {
+      debug(`Failed to serialize principal '${principal}' ${e}`);
+    }
+
+    return serializedPrincipal;
   },
 
   /**
    * Deserialize a base64 encoded principal (serialized with
    * Utils::serializePrincipal).
    *
    * @param {String} principal_b64 A base64 encoded serialized principal.
    * @return {nsIPrincipal} A deserialized principal.