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

[Patch] apr_file_path_merge returns incorrect truepath on certain 'short paths' on Windows

From: Bert Huijben <rhuijben_at_collab.net>
Date: Mon, 15 Jun 2015 14:04:24 +0200

        Hi,

In the last few months we got two reports from Subversion users that
passing certain short paths to 'svn' failed for them.

E.g.
[[
> mkdir ALongName.impl
> dir /x
...
27/03/2015 12:50 <DIR> ALONGN~1.IMP ALongName.impl
]]
And then passing this 'ALONGN~1.IMP' path works just fine.

While
[[
> mkdir api.impl
> dir /x
...
  27/03/2015 12:52 <DIR> API~1.IMP api.impl
...
]]
And then passing the 'API~1.IMP' path doesn't (uses api.implP)
(Samples copied from a mail from Stephen White to dev_at_subversion.a.o)

The problem here is that the short path is actually longer than the long
path. which triggers a bug in APR's truename code that we use. In this
specific case the length of the updated path is not properly updated, to
reflect the shorter total path length.

When trying to write a testcase for this issue I found that Windows
disables short path generation on user created NTFS filesystems these
days. Only on system partition the default setup enables short path
creation. (An admin can enable short paths via something like 'fsutil
8dot3name set R: 1', or a flag can be passed to format.exe)

The attached patch fixes the problem, which appears to be specific for the
last path component (saveslash = FALSE).

I would like to see this problem fixed in apr 1.5.

The attached patch applies directly to 1.5.x and trunk.

Thanks,
        Bert

Received on 2015-06-15 14:04:31 CEST

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