[Pkg-mozext-commits] [requestpolicy] 40/100: fix #478 and another bug + tidy up requestType

David Prévot taffit at moszumanska.debian.org
Fri Dec 12 22:56:54 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit 3d721e6ffb2990c7cb8ffc7205b8953b35ddeee6
Author: myrdd <myrdd at users.noreply.github.com>
Date:   Mon Sep 29 23:42:18 2014 +0200

    fix #478 and another bug + tidy up requestType
---
 src/modules/FileUtil.jsm         |  1 +
 src/modules/PolicyManager.jsm    |  4 +--
 src/modules/Request.jsm          |  4 ++-
 src/modules/RequestProcessor.jsm | 70 ++++++++++++----------------------------
 4 files changed, 25 insertions(+), 54 deletions(-)

diff --git a/src/modules/FileUtil.jsm b/src/modules/FileUtil.jsm
index e1d6b75..bd48e34 100644
--- a/src/modules/FileUtil.jsm
+++ b/src/modules/FileUtil.jsm
@@ -67,6 +67,7 @@ var FileUtil = {
   fileToString : function(file) {
     var stream = CC["@mozilla.org/network/file-input-stream;1"]
         .createInstance(CI.nsIFileInputStream);
+    // TODO: Handle NS_ERROR_FILE_NOT_FOUND
     stream.init(file, 0x01, 0444, 0);
     stream.QueryInterface(CI.nsILineInputStream);
 
diff --git a/src/modules/PolicyManager.jsm b/src/modules/PolicyManager.jsm
index 1dd0fa7..d51de40 100644
--- a/src/modules/PolicyManager.jsm
+++ b/src/modules/PolicyManager.jsm
@@ -119,12 +119,11 @@ const REQUEST_REASON_RELATIVE_URL          = 14; // TODO: give user control abou
  * whether a request is allowed or not. Sometimes only the boolean value of
  * isAllowed is needed; in that case the other arguments may be unused.
  */
-function RequestResult(isAllowed, requestType, resultReason) {
+function RequestResult(isAllowed, resultReason) {
   this.matchedAllowRules = [];
   this.matchedDenyRules = [];
 
   this.isAllowed = isAllowed;
-  this.requestType = requestType;
   this.resultReason = resultReason;
 }
 RequestResult.prototype = {
@@ -132,7 +131,6 @@ RequestResult.prototype = {
   matchedDenyRules : null,
 
   isAllowed : undefined,  // whether the request will be or has been allowed
-  requestType : undefined,
   resultReason : undefined,
 
   allowRulesExist : function() {
diff --git a/src/modules/Request.jsm b/src/modules/Request.jsm
index cc8263e..7f3736c 100644
--- a/src/modules/Request.jsm
+++ b/src/modules/Request.jsm
@@ -205,8 +205,10 @@ NormalRequest.prototype.isInternal = function() {
 
 
 
-function RedirectRequest(originURI, destURI) {
+function RedirectRequest(originURI, destURI, httpHeader) {
   Request.call(this, originURI, destURI, REQUEST_TYPE_REDIRECT);
+
+  this.httpHeader = httpHeader;
 }
 RedirectRequest.prototype = Object.create(Request.prototype);
 RedirectRequest.prototype.constructor = Request;
diff --git a/src/modules/RequestProcessor.jsm b/src/modules/RequestProcessor.jsm
index c52356c..f5df357 100644
--- a/src/modules/RequestProcessor.jsm
+++ b/src/modules/RequestProcessor.jsm
@@ -255,9 +255,7 @@ RequestProcessor.prototype.process = function(request) {
       // click again and so if we don't forget the previous blocked/allowed
       // requests, the menu becomes inaccurate. Now the question is: what
       // are we breaking by clearing the blocked/allowed requests here?
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_LINK_CLICK);
       return this.accept("User-initiated request by link click", request);
 
@@ -273,9 +271,7 @@ RequestProcessor.prototype.process = function(request) {
       // See the note above for link clicks and forgetting blocked/allowed
       // requests on refresh. I haven't tested if it's the same for forms
       // but it should be so we're making the same change here.
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_FORM_SUBMISSION);
       return this.accept("User-initiated request by form submission", request);
 
@@ -285,18 +281,14 @@ RequestProcessor.prototype.process = function(request) {
       // the page's content. Therefore, we make sure that our cache of
       // blocked requests isn't removed in this case.
       delete this._historyRequests[destURI];
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_HISTORY_REQUEST);
       return this.accept("History request", request, true);
     } else if (this._userAllowedRedirects[originURI]
         && this._userAllowedRedirects[originURI][destURI]) {
       // shouldLoad is called by location.href in overlay.js as of Fx
       // 3.7a5pre and SeaMonkey 2.1a.
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_USER_ALLOWED_REDIRECT);
       return this.accept("User-allowed redirect", request, true);
     }
@@ -305,9 +297,7 @@ RequestProcessor.prototype.process = function(request) {
       if (request.aRequestOrigin.asciiHost == "browser") {
         // "browser" origin shows up for favicon.ico and an address entered
         // in address bar.
-        request.requestResult = new requestpolicy.mod.RequestResult(
-            true,
-            undefined,
+        request.requestResult = new requestpolicy.mod.RequestResult(true,
             requestpolicy.mod.REQUEST_REASON_USER_ACTION);
         return this.accept(
             "User action (e.g. address entered in address bar) or other good "
@@ -320,9 +310,7 @@ RequestProcessor.prototype.process = function(request) {
         // that originate from their xul files. If you're reading this and
         // you know of a way to use this to evade RequestPolicy, please let
         // me know, I will be very grateful.
-        request.requestResult = new requestpolicy.mod.RequestResult(
-            true,
-            undefined,
+        request.requestResult = new requestpolicy.mod.RequestResult(true,
             requestpolicy.mod.REQUEST_REASON_USER_ACTION);
         return this.accept(
             "User action (e.g. address entered in address bar) or other good "
@@ -339,9 +327,7 @@ RequestProcessor.prototype.process = function(request) {
     if (request.aContext && request.aContext.nodeName == "xul:browser" &&
         request.aContext.currentURI &&
         request.aContext.currentURI.spec == "about:blank") {
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_NEW_WINDOW);
       return this.accept("New window (should probably only be an allowed " +
           "popup's initial request)", request, true);
@@ -361,9 +347,7 @@ RequestProcessor.prototype.process = function(request) {
     var originIdent = requestpolicy.mod.DomainUtil.getIdentifier(originURI);
     var destIdent = requestpolicy.mod.DomainUtil.getIdentifier(destURI);
     if (originIdent == destIdent) {
-      request.requestResult = new requestpolicy.mod.RequestResult(
-          true,
-          undefined,
+      request.requestResult = new requestpolicy.mod.RequestResult(true,
           requestpolicy.mod.REQUEST_REASON_IDENTICAL_IDENTIFIER);
       return this.accept(
           "Allowing request where origin protocol, host, and port are the" +
@@ -465,9 +449,7 @@ RequestProcessor.prototype.process = function(request) {
       var allowOrigin = rule[0] ? originURI.indexOf(rule[0]) == 0 : true;
       var allowDest = rule[1] ? destURI.indexOf(rule[1]) == 0 : true;
       if (allowOrigin && allowDest) {
-        request.requestResult = new requestpolicy.mod.RequestResult(
-            true,
-            undefined,
+        request.requestResult = new requestpolicy.mod.RequestResult(true,
             requestpolicy.mod.REQUEST_REASON_COMPATIBILITY);
         return this.accept(
             "Extension/application compatibility rule matched [" + rule[2] +
@@ -665,13 +647,15 @@ RequestProcessor.prototype._examineHttpResponse = function(observedSubject) {
     dest = destAsUri;
   }
 
-  var request = new requestpolicy.mod.RedirectRequest(originURI, dest);
+  var request = new requestpolicy.mod.RedirectRequest(originURI, dest,
+      headerType);
   this.processRedirect(request, httpChannel);
 };
 
 RequestProcessor.prototype.processRedirect = function(request, httpChannel) {
   var originURI = request.originURI;
   var destURI = request.destURI;
+  var headerType = request.headerType;
 
   // Ignore redirects to javascript. The browser will ignore them, as well.
   if (requestpolicy.mod.DomainUtil.getUriObject(destURI)
@@ -1007,7 +991,6 @@ RequestProcessor.prototype.checkRedirect = function(request) {
 
   var result = this._rpService._policyMgr.checkRequestAgainstUserPolicies(
       originURIObj, destURIObj);
-  result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
   // For now, we always give priority to deny rules.
   if (result.denyRulesExist()) {
     result.isAllowed = false;
@@ -1020,7 +1003,6 @@ RequestProcessor.prototype.checkRedirect = function(request) {
 
   var result = this._rpService._policyMgr.
       checkRequestAgainstSubscriptionPolicies(originURIObj, destURIObj);
-  result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
   // For now, we always give priority to deny rules.
   if (result.denyRulesExist()) {
     result.isAllowed = false;
@@ -1035,9 +1017,7 @@ RequestProcessor.prototype.checkRedirect = function(request) {
       || destURI.indexOf(":") == -1) {
     // Redirect is to a relative url.
     // ==> allow.
-    return new requestpolicy.mod.RequestResult(
-        true,
-        requestpolicy.mod.REQUEST_TYPE_REDIRECT,
+    return new requestpolicy.mod.RequestResult(true,
         requestpolicy.mod.REQUEST_REASON_RELATIVE_URL);
   }
 
@@ -1046,16 +1026,12 @@ RequestProcessor.prototype.checkRedirect = function(request) {
     var allowOrigin = rule[0] ? originURI.indexOf(rule[0]) == 0 : true;
     var allowDest = rule[1] ? destURI.indexOf(rule[1]) == 0 : true;
     if (allowOrigin && allowDest) {
-      return new requestpolicy.mod.RequestResult(
-        true,
-        requestpolicy.mod.REQUEST_TYPE_REDIRECT,
-        requestpolicy.mod.REQUEST_REASON_COMPATIBILITY
-      );
+      return new requestpolicy.mod.RequestResult(true,
+        requestpolicy.mod.REQUEST_REASON_COMPATIBILITY);
     }
   }
 
   var result = this._checkByDefaultPolicy(originURI, destURI);
-  result.requestType = requestpolicy.mod.REQUEST_TYPE_REDIRECT;
   return result;
 };
 
@@ -1145,8 +1121,8 @@ RequestProcessor.prototype.accept = function(reason, request, unforbidable) {
   // We aren't recording the request so it doesn't show up in the menu, but we
   // want it to still show up in the request log.
   if (unforbidable) {
-    this._notifyRequestObserversOfAllowedRequest(originUri, destUri,
-        requestResult);
+    this._notifyRequestObserversOfAllowedRequest(request.originURI,
+        request.destURI, request.requestResult);
   } else {
     this._recordAllowedRequest(request.originURI, request.destURI, false,
         request.requestResult);
@@ -1184,9 +1160,7 @@ RequestProcessor.prototype._cacheShouldLoadResult = function(result, originUri,
 RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
     destUri) {
   if (this._rpService._defaultAllow) {
-    var result = new requestpolicy.mod.RequestResult(
-        true,
-        undefined,
+    var result = new requestpolicy.mod.RequestResult(true,
         requestpolicy.mod.REQUEST_REASON_DEFAULT_POLICY);
     return result;
   }
@@ -1194,9 +1168,7 @@ RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
     var originDomain = requestpolicy.mod.DomainUtil.getDomain(
         originUri);
     var destDomain = requestpolicy.mod.DomainUtil.getDomain(destUri);
-    return new requestpolicy.mod.RequestResult(
-        originDomain == destDomain,
-        undefined,
+    return new requestpolicy.mod.RequestResult(originDomain == destDomain,
         requestpolicy.mod.REQUEST_REASON_DEFAULT_SAME_DOMAIN);
   }
   // We probably want to allow requests from http:80 to https:443 of the same
@@ -1206,9 +1178,7 @@ RequestProcessor.prototype._checkByDefaultPolicy = function(originUri,
       originUri, requestpolicy.mod.DomainUtil.LEVEL_SOP);
   var destIdent = requestpolicy.mod.DomainUtil.getIdentifier(destUri,
       requestpolicy.mod.DomainUtil.LEVEL_SOP);
-  return new requestpolicy.mod.RequestResult(
-      (originIdent == destIdent),
-      undefined,
+  return new requestpolicy.mod.RequestResult(originIdent == destIdent,
       requestpolicy.mod.REQUEST_REASON_DEFAULT_SAME_DOMAIN);
 };
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list