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 "".
>