httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@hyperreal.org
Subject cvs commit: apache-1.3/src/main http_request.c util.c
Date Thu, 05 Nov 1998 20:11:31 GMT
coar        98/11/05 12:11:30

  Modified:    src      CHANGES
               src/main http_request.c util.c
  Log:
  	Fix some problems with the handling of UNC paths.
  
  Submitted by:	Ken Parzygnat <kparz@us.ibm.com>
  
  Revision  Changes    Path
  1.1136    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1135
  retrieving revision 1.1136
  diff -u -r1.1135 -r1.1136
  --- CHANGES	1998/11/05 20:07:48	1.1135
  +++ CHANGES	1998/11/05 20:11:23	1.1136
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.4
   
  +  *) Fix problems with handling of UNC names (e.g., \\host\path)
  +     on Win32.  [Ken Parzygnat <kparz@us.ibm.com>]
  +
     *) Rework os_canonical_*() on Win32 so it's simpler, more
        robust, and works.  [Ken Parzygnat <kparz@us.ibm.com>]
        PR#2555, 2915, 3064, 3232
  
  
  
  1.137     +26 -4     apache-1.3/src/main/http_request.c
  
  Index: http_request.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/http_request.c,v
  retrieving revision 1.136
  retrieving revision 1.137
  diff -u -r1.136 -r1.137
  --- http_request.c	1998/11/05 20:07:52	1.136
  +++ http_request.c	1998/11/05 20:11:27	1.137
  @@ -180,6 +180,7 @@
       int rv;
   #ifdef WIN32
       char buf[5];
  +    BOOL bStripSlash=TRUE;
   #endif
   
       if (r->finfo.st_mode) {
  @@ -198,12 +199,33 @@
   	path=buf;
   	end=buf+4;
       }
  -#endif
   
  -    /* Advance over trailing slashes ... NOT part of filename */
  +    /* If UNC name == //machine/share/, do not 
  +     * advance over the trailing slash.  Any other
  +     * UNC name is OK to strip the slash.
  +     */
  +    cp = end;
  +    if (strlen(path) > 2 && path[0] == '/' && path[1] == '/' &&

  +        path[2] != '/' && cp[-1] == '/') {
  +        char *p;
  +        int iCount=0;
  +        p = path;
  +        while (p = strchr(p,'/')) {
  +            p++;
  +            iCount++;
  +        }
  +    
  +        if (iCount == 4)
  +            bStripSlash = FALSE;
  +    }
   
  -    for (cp = end; cp > path && cp[-1] == '/'; --cp)
  -        continue;
  +    if (bStripSlash)
  +#endif
  +        /* Advance over trailing slashes ... NOT part of filename 
  +         * if file is not a UNC name (Win32 only).
  +         */
  +        for (cp = end; cp > path && cp[-1] == '/'; --cp)
  +            continue;
   
   
       while (cp > path) {
  
  
  
  1.138     +7 -0      apache-1.3/src/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/util.c,v
  retrieving revision 1.137
  retrieving revision 1.138
  diff -u -r1.137 -r1.138
  --- util.c	1998/10/24 15:10:48	1.137
  +++ util.c	1998/11/05 20:11:27	1.138
  @@ -424,6 +424,13 @@
       char *d, *s;
   
       s = d = name;
  +
  +#ifdef WIN32
  +    /* Check for UNC names.  Leave leading two slashes. */
  +    if (s[0] == '/' && s[1] == '/')
  +        *d++ = *s++;
  +#endif
  +
       while (*s) {
   	if ((*d++ = *s) == '/') {
   	    do {
  
  
  

Mime
View raw message