[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [Issue 1084] - [PATCH] ra_svn move/copy bug

From: Eric Gillespie <epg_at_pretzelnet.org>
Date: 2003-01-15 21:28:13 CET

Karl Fogel <kfogel@newton.ch.collab.net> writes:

> Eric Gillespie <epg@pretzelnet.org> writes:
> > That's similar to what i originally thought. I thought it must
> > be a bug that a NULL ever made it to check_path. But i looked in
> > repos_to_repos_copy, and it treats NULL as if it is a perfectly
> > reasonable value to have (by doing some manipulation on the path
> > if it isn't NULL and not signalling an error if it is). I also
> > looked at ra_dav's check_path and see that it also treats NULL as
> > acceptable. Based on that evidence i concluded that it is legal
> > to pass a NULL to check_path.
> >
> > If that is deemed incorrect, i can provide a patch fixing all
> > check_path callers.
>
> The latter sounds better to me too (conservatively, of course -- that
> is, if the path "shouldn't" be null in the caller anyway, then add no
> check). Thanks, Eric.

Well, assuming svn_path_join and svn_path_uri_decode never return
NULL, this turns out to be the only place where check_path is
called with a NULL. I know that svn_path_uri_decode *does*
return NULL if you pass NULL to it, but every place where the
svn_path_uri_decode return value is passed to check_path never
passes NULL to svn_path_uri_decode.

So, surprisingly enough, the new patch is just as small as the
old one. I have included it here as well as in the issue. If
this patch looks correct, i'll write up a log message for it.

Index: subversion/libsvn_client/copy.c
===================================================================
--- subversion/libsvn_client/copy.c (revision 4395)
+++ subversion/libsvn_client/copy.c (working copy)
@@ -228,6 +228,8 @@
           (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
            "error decomposing relative path `%s'", src_rel);
     }
+ else
+ src_rel = "";
 
   dst_rel = svn_path_is_child (top_url, dst_url, pool);
   if (dst_rel)
@@ -239,6 +241,8 @@
           (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
            "error decomposing relative path `%s'", dst_rel);
     }
+ else
+ dst_rel = "";
 
   /* Allocate room for the root baton, the pieces of the
      source's or destination's path, and the destination itself. */

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Jan 15 21:29:02 2003

This is an archived mail posted to the Subversion Dev mailing list.