classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: URLStreamHandler does not correcly parse filenames as URL


From: Mark Wielaard
Subject: Re: URLStreamHandler does not correcly parse filenames as URL
Date: Fri, 02 Jul 2004 01:43:36 +0200

On Mon, 2004-06-14 at 17:58, Guilhem Lavaux wrote:
> Roman Kennke wrote:
> > Original Submission:  I found, that java.net.URLStreamHandler does not
> > correctly
> > parse filenames such as "mapping.xml" as URLs. Some applications do such
> > things,
> > like Castor (here I found the error). The problem is, that
> > URLStreamHandler.parseURL
> > looks for "/" and does not check, if a "/" is found. In the case that
> > there is no
> > "/" invalid values are passed to java.lang.String.substring.
> > 
> > The patch should solve this problem. At least it does for me :-)
> > 
> > http://savannah.gnu.org/bugs/download.php?item_id=9331&item_file_id=1403
> > 
> > any comments on this?
> > 
> 
> It seems good to me.

Agreed. I reformatted the patch a bit (see the source code style guide
http://www.gnu.org/software/classpath/docs/hacking.html#SEC7) and
committed it with the following ChangeLog entry:

2004-07-01  Mark Wielaard  <address@hidden>

        Reported by Roman Kennke <address@hidden> (bug #9331)
        * java/net/URLStreamHandler.java (parseURL): When url file part
        doesn't contain a '/' just ignore context.

Thanks,

Mark
Index: java/net/URLStreamHandler.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/net/URLStreamHandler.java,v
retrieving revision 1.28
diff -u -r1.28 URLStreamHandler.java
--- java/net/URLStreamHandler.java      23 Apr 2004 21:13:20 -0000      1.28
+++ java/net/URLStreamHandler.java      1 Jul 2004 23:33:17 -0000
@@ -1,5 +1,5 @@
 /* URLStreamHandler.java -- Abstract superclass for all protocol handlers
-   Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -204,9 +204,11 @@
       {
        // Context is available, but only override it if there is a new file.
        int lastSlash = file.lastIndexOf('/');
-
-       file =
-         file.substring(0, lastSlash) + '/' + spec.substring(start, end);
+       if (lastSlash < 0)
+         file = spec.substring(start, end);
+       else
+         file = (file.substring(0, lastSlash)
+                 + '/' + spec.substring(start, end));
 
        if (url.getProtocol().equals("file"))
          {

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]