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