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

Re: svn commit: r1129641 - in /subversion/trunk/subversion: include/private/svn_fs_util.h libsvn_fs/fs-loader.c libsvn_repos/dump.c tests/cmdline/svnadmin_tests.py

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Tue, 31 May 2011 15:38:44 +0300

stsp_at_apache.org wrote on Tue, May 31, 2011 at 12:23:05 -0000:
> Author: stsp
> Date: Tue May 31 12:23:05 2011
> New Revision: 1129641
>
> URL: http://svn.apache.org/viewvc?rev=1129641&view=rev
> Log:
> Make 'svnadmin verify' error out if an invalid path is found in the repository.
>

Thanks :-) Reviewing:

> There have been reports of non-UTF-8 paths having entered repositories,
> probably due to buggy third-party clients running against pre-1.6 servers
> (pre-1.6 servers do not verify filename encoding).
> See this thread for one such report, which also mentions that
> 'svnadmin verify' didn't detect this problem:
> http://svn.haxx.se/users/archive-2011-05/0361.shtml
>
> * subversion/include/private/svn_fs_util.h
> (svn_fs__path_valid): Declare.
>

svn_fs_util.h is for the libsvn_fs_util library; I think you want
to move the declaration to svn_fs_private.h.

> +++ subversion/trunk/subversion/libsvn_repos/dump.c Tue May 31 12:23:05 2011
> @@ -36,6 +36,7 @@
> #include "svn_props.h"
>
> #include "private/svn_mergeinfo_private.h"
> +#include "private/svn_fs_util.h"
>

(here too)

> +++ subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Tue May 31 12:23:05 2011
> @@ -1315,6 +1315,63 @@ text
> svntest.actions.load_repo(sbox, dump_str=dump_str,
> bypass_prop_validation=True)
>
> +# This test intentionally corrupts a revision and assumes an FSFS
> +# repository. If you can make it work with BDB please do so.
> +# However, the verification triggered by this test is in the repos layer
> +# so it will trigger with either backend anyway.
> +@SkipUnless(svntest.main.is_fs_type_fsfs)
> +def verify_non_utf8_paths(sbox):
> + "svadmin verify with non-UTF-8 paths"
> +
> + dumpfile = clean_dumpfile()
> + test_create(sbox)
> +
> + # Load the dumpstream
> + load_and_verify_dumpstream(sbox, [], [], dumpfile_revisions, dumpfile,
> + '--ignore-uuid')
> +
> + # Replace the path 'A' in revision 1 with a non-UTF-8 sequence.
> + # This has been observed in repositories in the wild, though Subversion
> + # 1.6 and greater should prevent such filenames from entering the repository.
> + path1 = os.path.join(sbox.repo_dir, "db", "revs", "0", "1")

You could use the fsfs_file() helper here. This will make the test work
correctly when passing FSFS_PACKING=1 FSFS_SHARDING=1 to 'make check'.

(and yes, that is extremely an edge case. If you don't have time I'll
fix it myself later this week)
Received on 2011-05-31 14:40:45 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.