Bug 34679 - URL encoding/decoding or accentuaed ressources broken
Summary: URL encoding/decoding or accentuaed ressources broken
Status: NEW
Alias: None
Product: Slide
Classification: Unclassified
Component: WebDAV Server (show other bugs)
Version: 2.1
Hardware: All All
: P1 critical with 2 votes (vote)
Target Milestone: ---
Assignee: Slide Developer List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-04-29 15:14 UTC by David Delbecq
Modified: 2005-04-29 07:14 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Delbecq 2005-04-29 15:14:13 UTC
Servlet is unable to interpret href url for ressources with accents or other    
non US-ASCII filename it has send itself.    
    
whole url decoding process is broken under a slide+tomcat (did not check with   
other containers)   
   
However, typing accentuated characters on the url bar directly does allow   
access to the ressource, because client send an uri with a different url   
encoding which does not mess (the same format it uses for a put).   
    
  
Tested with:  
novell webdav client  
windows 2000 web folders  
DAVExplorer  
kio:webdav   
 
Analysis: 
The value received by req.getPathInfo() in WebdavUtils.getRelativePath() is 
already broken as container already intrepreted this as a 'classical' 
urlencode. What i mean is value of req.getPathInfo() has all %hh converted to 
exactly one character while this was encoded supposing it were utf-8 2 byte 
characters. So instead of téèst i get téèst. 
There seems to be a method named fixTomcatURL() but which does exactly the 
opposite of it job. At the output of this 'fix' the uri is converted to 
téèst. As you may guess slide has lost of difficulties to understand 
this :) 
 
This is a big problem as it renders public acces to a slide webdav folder 
useless. If someone puts a ressource with a non us-ascii character, this make 
this ressource unmodifiable! 
 
 
Suggestion: Stick to classical url encoding, let container manage the uri, 
they do that quite well using the HttpServletResponse.encodeURL()  !! 
Trying to by pass container in url encoding/decoding can only lead to such 
problems and weirdness.