Hi,
Could you please send your e-mails to this list in plain text?
That makes it much easier to answer in-line.
I would recommend canonicalizing the uris before passing them to the function.
That should fix most if not all problems in this error class.
svn_uri_canonicalize for urls, svn_relpath_canonicalize and
svn_dirent_canonicalize for local paths (or maybe svn_dirent_internal_style()
if you want ‘\’ to ‘/’ conversion on Windows).
Note that assert() is only fatal in debug/maintainer builds. In release builds
these checks are removed.
SVN_ERR_ASSERT() can be turned into reporting an error on initialization, which
might be a good route for JavaHL. In SharpSvn (for .Net) I make the assertion
callback throw a C++ exception, which can then be caught by callers higher in
the chain as a .Net exception, while the C++ exception handling makes sure the
pools are cleaned up while clearing the stack.
Bert
From: [email protected] [mailto:[email protected]] On Behalf Of
Vladimir Berezniker
Sent: zondag 24 juni 2012 19:18
To: [email protected]
Subject: [RFC] Passing invalid uri to svn_ra_reparent causes JVM to abort when
using JavaHL library (javahl-ra branch)
Hi All,
While implementing svn_ra_reparent() function in JavaHL, I created a test that
sends string "BAD" uri to the reparent function (I am trying to make sure
JavaHL can't take the JVM down). This causes segfault inside
uri_skip_ancestor() function of the line 1483 of the dirent_uri.c file:
assert(svn_uri_is_canonical(child_uri, NULL));
which is called from svn_uri_skip_ancestor() function.
It seems a bit harsh to kill the whole JVM because caller passed a poorly
formed URI to a function, but I am not quite sure what would be the right way of
addressing this. If someone could point me in a right direction I'll prepare a
patch for review.
Thank you,
Vladimir