You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "William A. Rowe, Jr." <wr...@covalent.net> on 2001/09/26 16:52:10 UTC
Re: cvs commit: apache-1.3/src/os/win32 os.c
From: <st...@apache.org>
Sent: Wednesday, September 26, 2001 9:41 AM
> stoddard 01/09/26 07:41:11
>
> Modified: src/os/win32 os.c
> Log:
> Win32: Set errno to ENAMETOOLONG when os_stat() returns -1.
>
> 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.
>
> if ((len == 0) || (len >= MAX_PATH)) {
> + errno = ENAMETOOLONG;
> return -1;
> }
This is wrong (above).
Don't you mean...
if (len == 0) {
errno = Esomecode;
return -1;
}
if (len >= MAX_PATH) {
errno = ENAMETOOLONG;
return -1;
}
You can always ask Unix what error it likes for stat "".
Re: cvs commit: apache-1.3/src/os/win32 os.c
Posted by Bill Stoddard <bi...@wstoddard.com>.
Yep, you are right. My head is a bit fuzzy recovering from some flu like bug.
Bill
----- Original Message -----
From: "William A. Rowe, Jr." <wr...@covalent.net>
To: <de...@httpd.apache.org>; <ap...@apache.org>
Sent: Wednesday, September 26, 2001 10:52 AM
Subject: Re: cvs commit: apache-1.3/src/os/win32 os.c
> From: <st...@apache.org>
> Sent: Wednesday, September 26, 2001 9:41 AM
>
>
> > stoddard 01/09/26 07:41:11
> >
> > Modified: src/os/win32 os.c
> > Log:
> > Win32: Set errno to ENAMETOOLONG when os_stat() returns -1.
> >
> > 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.
> >
> > if ((len == 0) || (len >= MAX_PATH)) {
> > + errno = ENAMETOOLONG;
> > return -1;
> > }
>
> This is wrong (above).
>
> Don't you mean...
>
> if (len == 0) {
> errno = Esomecode;
> return -1;
> }
>
> if (len >= MAX_PATH) {
> errno = ENAMETOOLONG;
> return -1;
> }
>
> You can always ask Unix what error it likes for stat "".
>