Author: gonzalo
Date: 2005-06-27 12:16:35 -0400 (Mon, 27 Jun 2005)
New Revision: 46571

Modified:
   trunk/mcs/class/System.Web/System.Web/ChangeLog
   trunk/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
Log:
2005-06-27 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>

        * HttpResponseHeader.cs: URL encode \r and \n in header values. Fixes
        bug #75392.



Modified: trunk/mcs/class/System.Web/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web/ChangeLog     2005-06-27 16:11:07 UTC 
(rev 46570)
+++ trunk/mcs/class/System.Web/System.Web/ChangeLog     2005-06-27 16:16:35 UTC 
(rev 46571)
@@ -1,3 +1,8 @@
+2005-06-27 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
+
+       * HttpResponseHeader.cs: URL encode \r and \n in header values. Fixes
+       bug #75392.
+
 2005-06-26 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
 
        * HttpUtility.cs: fix another stupid buglet in htmldecode.

Modified: trunk/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web/HttpResponseHeader.cs 2005-06-27 
16:11:07 UTC (rev 46570)
+++ trunk/mcs/class/System.Web/System.Web/HttpResponseHeader.cs 2005-06-27 
16:16:35 UTC (rev 46571)
@@ -1,9 +1,9 @@
-// 
-// System.Web.HttpResponseHeader
-//
-// Author:
-//   Patrik Torstensson ([EMAIL PROTECTED])
-//
+// 
+// System.Web.HttpResponseHeader
+//
+// Author:
+//   Patrik Torstensson ([EMAIL PROTECTED])
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -25,49 +25,58 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Web {
-   internal class HttpResponseHeader {
-      private string _sHeader;
-      private string _sValue;
-      private int _iKnowHeaderId;
-
-      internal HttpResponseHeader(int KnowHeaderId, string value) {
-         _iKnowHeaderId = KnowHeaderId;
-         _sValue = value;
-      }
-
-      internal HttpResponseHeader(string header, string value) {
-         _sHeader = header;
-         _sValue = value;
-      }
-
-      internal string Name {
-         get {
-            if (null == _sHeader) {
-               return 
HttpWorkerRequest.GetKnownResponseHeaderName(_iKnowHeaderId);
-            }
-
-            return _sHeader;
-         }
-      }
-
-      internal string Value {
-         get {
-            return _sValue;
-         }
-        set {
-               _sValue = value;
-        }
-      }
-
-      internal void SendContent(HttpWorkerRequest WorkerRequest) {
-         if (null != _sHeader) {
-            WorkerRequest.SendUnknownResponseHeader(_sHeader, _sValue);
-         } else {
-            WorkerRequest.SendKnownResponseHeader(_iKnowHeaderId, _sValue);
-         }
-      }
-   }
-}
+using System;
+
+namespace System.Web {
+       class HttpResponseHeader {
+               string header;
+               string val;
+               int header_id;
+               static char [] CRLF = { '\r', '\n' };
+
+               internal HttpResponseHeader (int KnowHeaderId, string val)
+               {
+                       header_id = KnowHeaderId;
+                       this.val = val;
+               }
+
+               internal HttpResponseHeader (string header, string val) {
+                       header = header;
+                       this.val = val;
+               }
+
+               internal string Name {
+                       get {
+                               if (null == header)
+                                       return 
HttpWorkerRequest.GetKnownResponseHeaderName (header_id);
+
+                               return header;
+                       }
+               }
+
+               internal string Value {
+                       get { return val; }
+                       set { val = value; }
+               }
+
+               internal void SendContent (HttpWorkerRequest WorkerRequest)
+               {
+                       // use URL encoding on the value (see bug #75392)
+                       // but only for CR and LF. Other characters are left 
untouched.
+                       string actual_val = val;
+                       if (actual_val != null) {
+                               int crlf = actual_val.IndexOfAny (CRLF);
+                               if (crlf >= 0) {
+                                       actual_val = actual_val.Replace ("\r", 
"%0d");
+                                       actual_val = actual_val.Replace ("\n", 
"%0a");
+                               }
+                       }
+
+                       if (null != header) {
+                               WorkerRequest.SendUnknownResponseHeader 
(header, actual_val);
+                       } else {
+                               WorkerRequest.SendKnownResponseHeader 
(header_id, actual_val);
+                       }
+               }
+       }
+}


Property changes on: trunk/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to