On 2021/07/27 20:02:04 Pavel Lyalyakin wrote: > Hello, > > Is it supported to enter "username:password@" in the URL with the SVN > command-line client? > > The SVN client crashes when I run the following command: > [[[ > svn info https://username:passw...@svn.apache.org/repos/asf/subversion/trunk > ]]] > > [[[ > svn: E235000: In file '..\..\..\subversion\libsvn_client\util.c' line 96: > assertion failed (svn_uri__is_ancestor(pathrev->repos_root_url, url)) > ]]] > > svn, version 1.14.1 (r1886195) on Windows. > > Found this at https://stackoverflow.com/q/68502915/761095. >
Based on me digging around in GDB and in the source hunting for a similar assert, I'm guessing that uri_skip_ancestor doesn't account for the username/password in the URL: [[[ uri_skip_ancestor(const char *parent_uri, const char *child_uri) { apr_size_t len = strlen(parent_uri); if (0 != strncmp(parent_uri, child_uri, len)) return NULL; /* parent_uri is no ancestor of child_uri */ ]]] By code inspection, I believe parent_uri comes from svn_ra_get_repos_root2 and child_uri comes from the command line URL. I'm guessing the second still contains the username/password while the first one doesn't, so obviously the strncmp doesn't think they are equal. I'm not sure where the correct place would be to filter out the username/password. It could surely be done in uri_skip_ancestor but I also think there is already code to do this somewhere. Kind regards, Daniel