X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Frealpath.c;h=442c3ff7b32e1649620c845609e5f4d404b06b65;hp=da05446ea049d48a48fd187e0c043d65342d1e06;hb=414b512c0774e67ba8e160b605447d862d3be166;hpb=dbf2768f7b146e97e37a27316f70bb313f1acf15 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);