Browse Source

Protect against a malicious setDatabase. Remove unneeded save data.

Brendan Dahl 13 years ago
parent
commit
9a1741f466
  1. 5
      extensions/firefox/components/PdfStreamConverter.js
  2. 4
      web/viewer.js

5
extensions/firefox/components/PdfStreamConverter.js

@ -48,6 +48,9 @@ ChromeActions.prototype = {
setDatabase: function(data) { setDatabase: function(data) {
if (this.inPrivateBrowswing) if (this.inPrivateBrowswing)
return; return;
// Protect against something sending tons of data to setDatabase.
if (data.length > 4096)
return;
application.prefs.setValue(EXT_PREFIX + '.database', data); application.prefs.setValue(EXT_PREFIX + '.database', data);
}, },
getDatabase: function() { getDatabase: function() {
@ -142,7 +145,7 @@ PdfStreamConverter.prototype = {
// Setup a global listener waiting for the next DOM to be created and verfiy // Setup a global listener waiting for the next DOM to be created and verfiy
// that its the one we want by its URL. When the correct DOM is found create // that its the one we want by its URL. When the correct DOM is found create
// an event listener on that window for the pdf.js events that require // an event listener on that window for the pdf.js events that require
// chrome priviledges. // chrome priviledges. Code snippet from John Galt.
let window = aRequest.loadGroup.groupObserver let window = aRequest.loadGroup.groupObserver
.QueryInterface(Ci.nsIWebProgress) .QueryInterface(Ci.nsIWebProgress)
.DOMWindow; .DOMWindow;

4
web/viewer.js

@ -109,7 +109,7 @@ var Settings = (function SettingsClosure() {
var database = null; var database = null;
var index; var index;
if (isFirefoxExtension) if (isFirefoxExtension)
database = FirefoxCom.request('getDatabase', null); database = FirefoxCom.request('getDatabase', null) || '{}';
else if (isLocalStorageEnabled) else if (isLocalStorageEnabled)
database = localStorage.getItem('database') || '{}'; database = localStorage.getItem('database') || '{}';
else else
@ -131,8 +131,6 @@ var Settings = (function SettingsClosure() {
index = database.files.push({fingerprint: fingerprint}) - 1; index = database.files.push({fingerprint: fingerprint}) - 1;
this.file = database.files[index]; this.file = database.files[index];
this.database = database; this.database = database;
if (isLocalStorageEnabled)
localStorage.setItem('database', JSON.stringify(database));
} }
Settings.prototype = { Settings.prototype = {

Loading…
Cancel
Save