httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@decus.org (Rodent of Unusual Size)
Subject [PATCH] PR#146,187 is_url() not HTTP/1.1 conformant
Date Thu, 27 Feb 1997 18:07:38 GMT
    Both PR#146 and #187 complain that is_url() is being fascistic about
    what constitutes a valid URL.  Currently it requires "[a-zA-Z]*://",
    but RFC2068 says it should be "[-.+a-zA-Z0-9]+:".  (That is, if
    is_url() is supposed to be checking for an absoluteURI syntax.)

    This patch makes is_url() compliant with RFC2068 section 3.2.  The
    `if' statement is a little clunky, but..

    #ken    :-)}

Index: util.c
===================================================================
RCS file: /usr/users/coar/myApache/repository/apache/src/util.c,v
retrieving revision 1.43
diff -c -r1.43 util.c
*** 1.43	1997/02/18 16:27:26
--- util.c	1997/02/27 18:23:23
***************
*** 903,918 ****
      else return pstrcat (a, src1, src2, NULL);
  }
  
  int is_url(const char *u) {
      register int x;
  
!     for(x=0;u[x] != ':';x++)
!         if((!u[x]) || (!isalpha(u[x])))
              return 0;
  
!     if((u[x+1] == '/') && (u[x+2] == '/'))
!         return 1;
!     else return 0;
  }
  
  int can_exec(const struct stat *finfo) {
--- 903,923 ----
      else return pstrcat (a, src1, src2, NULL);
  }
  
+ /*
+  * Check for an absoluteURI syntax (see section 3.2 in RFC2068).
+  */
  int is_url(const char *u) {
      register int x;
  
!     for (x = 0; u[x] != ':'; x++) {
!         if ((! u[x]) ||
! 	    ((! isalpha(u[x])) && (! isdigit(u[x])) &&
! 	     (u[x] != '+') && (u[x] != '-') && (u[x] != '.'))) {
              return 0;
+ 	}
+     }
  
!     return (x ? 1 : 0);  /* If the first character is ':', it's broken, too */
  }
  
  int can_exec(const struct stat *finfo) {

Mime
View raw message