[Mono-bugs] [Bug 53670][Nor] New - Encoding for UrlEncode and UrlPathEncode, and exception raised by UrlPathEncode for path w/o a '?'

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Sat, 31 Jan 2004 09:40:41 -0500 (EST)

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by mmorano@mikeandwan.us.


--- shadow/53670	2004-01-31 09:40:41.000000000 -0500
+++ shadow/53670.tmp.32025	2004-01-31 09:40:41.000000000 -0500
@@ -0,0 +1,86 @@
+Bug#: 53670
+Product: Mono/Class Libraries
+Version: unspecified
+OS Details: Gentoo
+Status: NEW   
+Priority: Normal
+Component: Sys.Web
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: mmorano@mikeandwan.us               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+Summary: Encoding for UrlEncode and UrlPathEncode, and exception raised by UrlPathEncode for path w/o a '?'
+Description of Problem:
+I am using mono0.29 and mod_mono0.6.  I have a website which has a control
+to list the contents of a directory, where each file in the directory will
+be displayed as a link for the user to click.  The problem I am having is
+that some of these files have spaces in them, and when I try to UrlEncode
+them using HttpServerUtility, space characters are encoded with '+' characters.
+This _does_ work in xsp0.8, and it happily finds the file the user clicks
+on.  However, in mod_mono through apache, it does not find these files.  
+I then attempted to use UrlPathEncode, and this failed because the file
+does not  have a querystring associated to it.  The code tries to find the
+index of the '?' and then takes the substring from the start to this
+position, however, in the case of a url w/o a querystring, this would be a
+call to substring(0, -1) which then throws an Argument out of range exception.
+Additionally, the escaping of the path should use the %XX escape scheme,
+such as %20 for a space.  Perhaps this is what is tripping up apache/mod_mono.
+Steps to reproduce the problem:
+1. access the following page:
+<%@ page language="c#" %>
+string s1 = "http://localhost/My File Contains A Space.txt";
+string s2 = Server.UrlEncode(s1);
+string s3;
+try {
+  s3 = Server.UrlPathEncode(s1);
+catch(Exception e)
+  s3 = "ERROR: Server.UrlPathEncode";
+Value to encode: <%= s1 %>
+URL Encoded: <%= s2 %>
+URL Path Encoded: <%= s3 %>
+Actual Results:
+(using xsp0.8)
+Value to encode: http://localhost/My File Contains A Space.txt
+URL Encoded: http%3A%2F%2Flocalhost%2FMy+File+Contains+A+Space.txt
+URL Path Encoded: ERROR: Server.UrlPathEncode
+Expected Results:
+The URL Encoding would use %20 escape sequences for spaces, not '+' characters.
+No exception would be thrown calling UrlPathEncode() with a string that
+does not contain a querystring ('?')
+How often does this happen? 
+Additional Information: