kfogel@tigris.org writes:
> Log:
> Resolve issue #966: empty input caused 'svnadmin load' to segfault.
>
> * subversion/include/svn_error_codes.h
> (SVN_ERR_BAD_INPUT): New error code.
>
> * subversion/libsvn_repos/load.c
> (svn_repos_parse_dumpstream): Check that the first call to
> svn_stream_readline got some data.
I also tried to write a regression test for this, but got stumped on
the question of how to portably feed empty input to 'svnadmin load' on
stdin, in Python. (Is creating empty file even a necessary part of
this?) Anyone know an answer off the top of their head? I could
probably kluge something together, after poking around on python.org,
but I have a feeling there's a standard technique for this situation.
Here's my patch-in-progress; see where it says "???".
* subversion/tests/clients/cmdline/svnadmin_tests.py
(load_empty_file): New test, incomplete.
Index: svnadmin_tests.py
===================================================================
--- svnadmin_tests.py (revision 3643)
+++ svnadmin_tests.py (working copy)
@@ -332,6 +332,27 @@
"* Dumped revision 1.\n",
"* Dumped revision 2.\n"], errput)
+#----------------------------------------------------------------------
+
+def load_empty_file(sbox):
+ "test 'svnadmin load' on an empty file"
+
+ repos = os.path.join(svntest.main.temp_dir, sbox.name)
+ empty_file = os.path.join(svntest.main.temp_dir,
+ sbox.name + ".empty-dumpfile")
+
+ svntest.main.create_repos(repos)
+ fp = open(empty_file, 'w')
+ fp.close()
+
+ output, errput = svntest.main.run_svnadmin("load", repos, "### ???")
+ for line in errput:
+ if re.match(".*empty or incomplete input data*", line):
+ return 0
+
+ # Else never matched the expected error string, so return failure.
+ return 1
+
########################################################################
# Run the tests
@@ -345,7 +366,8 @@
remove_txn,
list_revs,
dump_copied_dir,
- dump_move_dir_modify_child
+ dump_move_dir_modify_child,
+ load_empty_file,
]
if __name__ == '__main__':
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Nov 4 20:10:09 2002