* child_info.h (CURR_CHILD_INFO_MAGIC): Use updated value.
* path.cc (path_conv::check): Check the output Win32 path for trailing spaces and dots, not the input path. Disallow all use of foo./bar since consistently getting this right is time consuming. Remove strange test for "unc\" since no one seems to know what it's for.
This commit is contained in:
parent
bbe009b770
commit
5524af6e9b
|
@ -1,3 +1,15 @@
|
||||||
|
2004-12-18 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
|
* child_info.h (CURR_CHILD_INFO_MAGIC): Use updated value.
|
||||||
|
|
||||||
|
2004-12-18 Christopher Faylor <cgf@timesys.com>
|
||||||
|
Pierre Humblet <pierre.humblet@ieee.org>
|
||||||
|
|
||||||
|
* path.cc (path_conv::check): Check the output Win32 path for trailing
|
||||||
|
spaces and dots, not the input path. Disallow all use of foo./bar
|
||||||
|
since consistently getting this right is time consuming. Remove
|
||||||
|
strange test for "unc\" since no one seems to know what it's for.
|
||||||
|
|
||||||
2004-12-18 Chris January <chris@atomice.net>
|
2004-12-18 Chris January <chris@atomice.net>
|
||||||
|
|
||||||
* fhandler_proc.cc (proc_listing): Add entry for "self".
|
* fhandler_proc.cc (proc_listing): Add entry for "self".
|
||||||
|
|
|
@ -29,7 +29,7 @@ enum child_info_types
|
||||||
|
|
||||||
#define EXEC_MAGIC_SIZE sizeof(child_info)
|
#define EXEC_MAGIC_SIZE sizeof(child_info)
|
||||||
|
|
||||||
#define CURR_CHILD_INFO_MAGIC 0x694cd4b8U
|
#define CURR_CHILD_INFO_MAGIC 0x17ad771aU
|
||||||
|
|
||||||
/* NOTE: Do not make gratuitous changes to the names or organization of the
|
/* NOTE: Do not make gratuitous changes to the names or organization of the
|
||||||
below class. The layout is checksummed to determine compatibility between
|
below class. The layout is checksummed to determine compatibility between
|
||||||
|
|
|
@ -546,25 +546,12 @@ path_conv::check (const char *src, unsigned opt,
|
||||||
/* Detect if the user was looking for a directory. We have to strip the
|
/* Detect if the user was looking for a directory. We have to strip the
|
||||||
trailing slash initially while trying to add extensions but take it
|
trailing slash initially while trying to add extensions but take it
|
||||||
into account during processing */
|
into account during processing */
|
||||||
if (tail > path_copy + 1)
|
if (tail > path_copy + 1 && isslash (tail[-1]))
|
||||||
{
|
{
|
||||||
if (isslash (tail[-1]))
|
need_directory = 1;
|
||||||
{
|
*--tail = '\0';
|
||||||
need_directory = 1;
|
|
||||||
tail--;
|
|
||||||
}
|
|
||||||
/* Remove trailing dots and spaces which are ignored by Win32 functions but
|
|
||||||
not by native NT functions. */
|
|
||||||
while (tail[-1] == '.' || tail[-1] == ' ')
|
|
||||||
tail--;
|
|
||||||
if (tail > path_copy + 1 && isslash (tail[-1]))
|
|
||||||
{
|
|
||||||
error = ENOENT;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
path_end = tail;
|
path_end = tail;
|
||||||
*tail = '\0';
|
|
||||||
|
|
||||||
/* Scan path_copy from right to left looking either for a symlink
|
/* Scan path_copy from right to left looking either for a symlink
|
||||||
or an actual existing file. If an existing file is found, just
|
or an actual existing file. If an existing file is found, just
|
||||||
|
@ -835,6 +822,32 @@ out:
|
||||||
|
|
||||||
if (dev.devn == FH_FS)
|
if (dev.devn == FH_FS)
|
||||||
{
|
{
|
||||||
|
if (strncmp (path, "\\\\.\\", 4))
|
||||||
|
{
|
||||||
|
/* Windows ignores trailing dots and spaces */
|
||||||
|
char *tail = NULL;
|
||||||
|
for (char *p = path; *p; p++)
|
||||||
|
if (*p != '.' && *p != ' ')
|
||||||
|
tail = NULL;
|
||||||
|
else if (p[1] == '\\')
|
||||||
|
{
|
||||||
|
error = ENOENT;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (!tail)
|
||||||
|
tail = p;
|
||||||
|
|
||||||
|
if (!tail)
|
||||||
|
/* nothing */;
|
||||||
|
else if (tail[-1] != '\\')
|
||||||
|
*tail = '\0';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error = ENOENT;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fs.update (path))
|
if (fs.update (path))
|
||||||
{
|
{
|
||||||
debug_printf ("this->path(%s), has_acls(%d)", path, fs.has_acls ());
|
debug_printf ("this->path(%s), has_acls(%d)", path, fs.has_acls ());
|
||||||
|
|
Loading…
Reference in New Issue