Bug 1338009 - Utils#deserializePrincipal should return NullPrincipal if deserialization fails. r=mikedeboer

This commit is contained in:
Christoph Kerschbaumer 2017-02-12 11:50:25 +01:00
parent 78ab903fce
commit 1cc7d653f7
3 changed files with 24 additions and 43 deletions

View File

@ -429,29 +429,16 @@ var SessionHistoryInternal = {
// FF55 will remove the triggeringPrincipal_b64, see Bug 1301666.
if (entry.triggeringPrincipal_base64 || entry.principalToInherit_base64) {
if (entry.triggeringPrincipal_base64) {
try {
shEntry.triggeringPrincipal =
Utils.deserializePrincipal(entry.triggeringPrincipal_base64);
} catch (e) {
debug(e);
}
shEntry.triggeringPrincipal =
Utils.deserializePrincipal(entry.triggeringPrincipal_base64);
}
if (entry.principalToInherit_base64) {
try {
shEntry.principalToInherit =
Utils.deserializePrincipal(entry.principalToInherit_base64);
} catch (e) {
debug(e);
}
shEntry.principalToInherit =
Utils.deserializePrincipal(entry.principalToInherit_base64);
}
} else if (entry.triggeringPrincipal_b64) {
try {
shEntry.triggeringPrincipal = Utils.deserializePrincipal(entry.triggeringPrincipal_b64);
shEntry.principalToInherit = shEntry.triggeringPrincipal;
}
catch (e) {
debug(e);
}
shEntry.triggeringPrincipal = Utils.deserializePrincipal(entry.triggeringPrincipal_b64);
shEntry.principalToInherit = shEntry.triggeringPrincipal;
}
if (entry.children && shEntry instanceof Ci.nsISHContainer) {

View File

@ -1425,30 +1425,16 @@ SessionStore.prototype = {
// FF55 will remove the triggeringPrincipal_b64, see Bug 1301666.
if (aEntry.triggeringPrincipal_base64 || aEntry.principalToInherit_base64) {
if (aEntry.triggeringPrincipal_base64) {
try {
shEntry.triggeringPrincipal =
Utils.deserializePrincipal(aEntry.triggeringPrincipal_base64);
}
catch (e) {
dump(e);
}
shEntry.triggeringPrincipal =
Utils.deserializePrincipal(aEntry.triggeringPrincipal_base64);
}
if (aEntry.principalToInherit_base64) {
try {
shEntry.principalToInherit =
Utils.deserializePrincipal(aEntry.principalToInherit_base64);
} catch (e) {
dump(e);
}
shEntry.principalToInherit =
Utils.deserializePrincipal(aEntry.principalToInherit_base64);
}
} else if (aEntry.triggeringPrincipal_b64) {
try {
shEntry.triggeringPrincipal = Utils.deserializePrincipal(aEntry.triggeringPrincipal_b64);
shEntry.principalToInherit = shEntry.triggeringPrincipal;
}
catch (e) {
dump(e);
}
shEntry.triggeringPrincipal = Utils.deserializePrincipal(aEntry.triggeringPrincipal_b64);
shEntry.principalToInherit = shEntry.triggeringPrincipal;
}
if (aEntry.children && shEntry instanceof Ci.nsISHContainer) {

View File

@ -22,6 +22,10 @@ XPCOMUtils.defineLazyGetter(this, "SERIALIZED_SYSTEMPRINCIPAL", function() {
return Utils.serializePrincipal(Services.scriptSecurityManager.getSystemPrincipal());
});
function debug(msg) {
Services.console.logStringMessage("Utils: " + msg);
}
this.Utils = Object.freeze({
get SERIALIZED_SYSTEMPRINCIPAL() { return SERIALIZED_SYSTEMPRINCIPAL; },
@ -132,9 +136,13 @@ this.Utils = Object.freeze({
if (!principal_b64)
return null;
let principal = serializationHelper.deserializeObject(principal_b64);
principal.QueryInterface(Ci.nsIPrincipal);
return principal;
try {
let principal = serializationHelper.deserializeObject(principal_b64);
principal.QueryInterface(Ci.nsIPrincipal);
return principal;
} catch (e) {
debug(`Failed to deserialize principal_b64 '${principal_b64}' ${e}`);
}
return null;
}
});