Cygwin: remove old cruft from path_conv::check

Prior to commit b0717aae, path_conv::check had the following code:

      if (strncmp (path, "\\\\.\\", 4))
        {
          /* Windows ignores trailing dots and spaces in the last path
             component, and ignores exactly one trailing dot in inner
             path components. */
          char *tail = NULL;
          [...]
          if (!tail || tail == path)
            /* nothing */;
          else if (tail[-1] != '\\')
            {
              *tail = '\0';
          [...]
        }

Commit b0717aae0 intended to disable this code, but it inadvertently
disabled only part of it.  In particular, the declaration of the local
tail variable was in the disabled code, but the following remained:

          if (!tail || tail == path)
            /* nothing */;
          else if (tail[-1] != '\\')
            {
              *tail = '\0';
          [...]
        }

[A later commit removed the disabled code.]

The tail variable here points into a string different from path,
causing that string to be truncated under some circumstances.  See

  https://cygwin.com/ml/cygwin/2019-09/msg00001.html

for more details.

This commit fixes the problem by removing the leftover code
that was intended to be removed in b0717aae.
This commit is contained in:
Ken Brown 2019-09-21 13:09:09 -04:00
parent 4186409101
commit 9f24260ee9
1 changed files with 0 additions and 13 deletions

View File

@ -1168,19 +1168,6 @@ path_conv::check (const char *src, unsigned opt,
if (dev.isfs ())
{
if (strncmp (path, "\\\\.\\", 4))
{
if (!tail || tail == path)
/* nothing */;
else if (tail[-1] != '\\')
*tail = '\0';
else
{
error = ENOENT;
return;
}
}
/* If FS hasn't been checked already in symlink_info::check,
do so now. */
if (fs.inited ()|| fs.update (get_nt_native_path (), NULL))