* path.cc (cwdstuff::set): Rewrite previous change to properly test the end of

the buffer.
This commit is contained in:
Christopher Faylor 2009-05-29 20:18:50 +00:00
parent dc3c8b01f6
commit 992ddba949
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2009-05-29 Christopher Faylor <me+cygwin@cgf.cx>
* path.cc (cwdstuff::set): Rewrite previous change to properly test the
end of the buffer.
2009-05-28 Christopher Faylor <me+cygwin@cgf.cx>
* path.cc (cwdstuff::set): Avoid removing a nonexistent trailing slash.

View File

@ -3180,10 +3180,13 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit)
pdir->Length + 2);
RtlCopyUnicodeString (&win32, pdir);
RtlReleasePebLock ();
PWSTR eoBuffer = win32.Buffer + (win32.Length / sizeof (WCHAR));
/* Remove trailing slash if one exists. FIXME: Is there a better way to
do this? */
if (win32.Length > 3 * sizeof (WCHAR) && win32.Buffer[win32.Length - 1] == L'\\')
if ((eoBuffer - win32.Buffer) > 3 && eoBuffer[-1] == L'\\')
win32.Length -= sizeof (WCHAR);
posix_cwd = NULL;
}
else
@ -3198,10 +3201,14 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit)
upath.Buffer[0] = L'\\';
upath.Length = len * sizeof (WCHAR);
}
/* Remove trailing slash if one exists. FIXME: Is there a better way to
do this? */
else if (upath.Length > 3 * sizeof (WCHAR) && upath.Buffer[upath.Length] == L'\\')
upath.Length -= sizeof (WCHAR);
else
{
PWSTR eoBuffer = upath.Buffer + (upath.Length / sizeof (WCHAR));
/* Remove trailing slash if one exists. FIXME: Is there a better way to
do this? */
if ((eoBuffer - upath.Buffer) > 3 && eoBuffer[-1] == L'\\')
upath.Length -= sizeof (WCHAR);
}
RtlInitEmptyUnicodeString (&win32,
(PWCHAR) crealloc_abort (win32.Buffer,
upath.Length + 2),