X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Frealpath.c;h=442c3ff7b32e1649620c845609e5f4d404b06b65;hb=506a27d9690049e121fccf1a8947ec57e62055aa;hp=da05446ea049d48a48fd187e0c043d65342d1e06;hpb=dbf2768f7b146e97e37a27316f70bb313f1acf15;p=chise%2Fxemacs-chise.git.1 diff --git a/src/realpath.c b/src/realpath.c index da05446..442c3ff 100644 --- a/src/realpath.c +++ b/src/realpath.c @@ -90,11 +90,18 @@ win32_readlink (const char * name, char * buf, int size) assert (*name); /* Sort of check we have a valid filename. */ - if (strpbrk (name, "*?|<>\"") || strlen (name) >= MAX_PATH) + /* #### can we have escaped shell operators in a Windows filename? */ + if (strpbrk (name, "|<>\"") || strlen (name) >= MAX_PATH) { errno = EIO; return -1; } + /* #### can we have escaped wildcards in a Windows filename? */ + else if (strpbrk (name, "*?")) + { + errno = EINVAL; /* this valid path can't be a symlink */ + return -1; + } /* Find start of filename */ lastname = name + strlen (name);