You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by bn...@apache.org on 2005/08/24 23:09:58 UTC

svn commit: r239927 - /apr/apr/trunk/file_io/win32/filepath.c

Author: bnicholes
Date: Wed Aug 24 14:09:57 2005
New Revision: 239927

URL: http://svn.apache.org/viewcvs?rev=239927&view=rev
Log:
Don't bother checking empty strings when we already know that the string length is 0. This fixes a false error code of APR_EABOVEROOT when the result of the merge is just a file name with no path of any kind.

Modified:
    apr/apr/trunk/file_io/win32/filepath.c

Modified: apr/apr/trunk/file_io/win32/filepath.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/file_io/win32/filepath.c?rev=239927&r1=239926&r2=239927&view=diff
==============================================================================
--- apr/apr/trunk/file_io/win32/filepath.c (original)
+++ apr/apr/trunk/file_io/win32/filepath.c Wed Aug 24 14:09:57 2005
@@ -803,16 +803,16 @@
      * is still within given basepath.  Note that the root path 
      * segment is thoroughly tested prior to path parsing.
      */
-    if (flags & APR_FILEPATH_NOTABOVEROOT) {
-        if (memcmp(basepath, path + rootlen, baselen))
+    if ((flags & APR_FILEPATH_NOTABOVEROOT) && (baselen || rootlen)) {
+        if (baselen && memcmp(basepath, path + rootlen, baselen) &&
+            basepath[baselen - 1] != '/' && basepath[baselen - 1] != '\\')
             return APR_EABOVEROOT;
 
         /* Ahem... if we weren't given a trailing slash on the basepath,
          * we better be sure that /foo wasn't replaced with /foobar!
          */
-        if (basepath[baselen - 1] != '/' && basepath[baselen - 1] != '\\'
-                && path[rootlen + baselen] && path[rootlen + baselen] != '/' 
-                                           && path[rootlen + baselen] != '\\')
+        if (path[rootlen + baselen] && path[rootlen + baselen] != '/' 
+            && path[rootlen + baselen] != '\\')
             return APR_EABOVEROOT;
     }