This will fix problem where Apache on Windows can return a directory index when
it should return a negotiated file. read_types_multi() iterates over
the entries in a directory to build a candidate list of
files to negotiate. ap_sub_req_lookup_file() is called for each file
which in turn calls stat() (os_stat() on Windows) to verify the file exists.
mod_negotiation will decline the request (rather than failing the
request as it should) if os_stat() fails and errno is not set.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@91150
13f79535-47bb-0310-9956-
ffa450edef68
#include <stdio.h>
#include <time.h>
#include "os.h"
+#include "errno.h"
/* Win95 doesn't like trailing /s. NT and Unix don't mind. This works
* around the problem.
int len = strlen(szPath);
if ((len == 0) || (len >= MAX_PATH)) {
+ errno = ENAMETOOLONG;
return -1;
}
/* then we need to add one more to get \\machine\share\ */
if (nSlashes == 3) {
if (++len >= MAX_PATH) {
+ errno = ENAMETOOLONG;
return -1;
}
*s++ = '\\';