rse         99/10/27 00:56:24

  Modified:    src      CHANGES
               src/modules/standard mod_rewrite.c
  Log:
  Make sure mod_rewrite matches URL schemes case-insensitive and also allow
  additional (commonly used) URL schemes ldap:, news: and mailto:.
  
  Requested by: Klaus Johannes Rusch <[EMAIL PROTECTED]>
  Submitted by: Ralf S. Engelschall
  Reviewed by: Ralf S. Engelschall
  PR: 3140
  
  Revision  Changes    Path
  1.1440    +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1439
  retrieving revision 1.1440
  diff -u -r1.1439 -r1.1440
  --- CHANGES   1999/10/27 07:38:45     1.1439
  +++ CHANGES   1999/10/27 07:56:17     1.1440
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.10
   
  +  *) Make sure mod_rewrite matches URL schemes case-insensitive and also 
allow
  +     additional (commonly used) URL schemes ldap:, news: and mailto:.
  +     [Ralf S. Engelschall, Klaus Johannes Rusch <[EMAIL PROTECTED]>] PR#3140
  +
     *) Overhauled ApacheBench (ab) manpage ab.8.
        [Simon Baldwin <[EMAIL PROTECTED]>] PR#5139
   
  
  
  
  1.146     +37 -16    apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.145
  retrieving revision 1.146
  diff -u -r1.145 -r1.146
  --- mod_rewrite.c     1999/10/21 20:45:36     1.145
  +++ mod_rewrite.c     1999/10/27 07:56:22     1.146
  @@ -1131,13 +1131,19 @@
               return OK;
           }
           else if (  (strlen(r->filename) > 7 &&
  -                    strncasecmp(r->filename, "http://";, 7) == 0)
  +                    strncasecmp(r->filename, "http://";,   7) == 0)
                   || (strlen(r->filename) > 8 &&
  -                    strncasecmp(r->filename, "https://";, 8) == 0)
  +                    strncasecmp(r->filename, "https://";,  8) == 0)
                   || (strlen(r->filename) > 9 &&
                       strncasecmp(r->filename, "gopher://";, 9) == 0)
                   || (strlen(r->filename) > 6 &&
  -                    strncasecmp(r->filename, "ftp://";, 6) == 0)    ) {
  +                    strncasecmp(r->filename, "ftp://";,    6) == 0)
  +                || (strlen(r->filename) > 5 &&
  +                    strncasecmp(r->filename, "ldap:",     5) == 0)
  +                || (strlen(r->filename) > 5 &&
  +                    strncasecmp(r->filename, "news:";,     5) == 0)
  +                || (strlen(r->filename) > 7 &&
  +                    strncasecmp(r->filename, "mailto:";,   7) == 0)) {
               /* it was finally rewritten to a remote URL */
   
               /* skip 'scheme:' */
  @@ -1391,13 +1397,19 @@
               return OK;
           }
           else if (  (strlen(r->filename) > 7 &&
  -                    strncmp(r->filename, "http://";, 7) == 0)
  +                    strncasecmp(r->filename, "http://";,   7) == 0)
                   || (strlen(r->filename) > 8 &&
  -                    strncmp(r->filename, "https://";, 8) == 0)
  +                    strncasecmp(r->filename, "https://";,  8) == 0)
                   || (strlen(r->filename) > 9 &&
  -                    strncmp(r->filename, "gopher://";, 9) == 0)
  +                    strncasecmp(r->filename, "gopher://";, 9) == 0)
                   || (strlen(r->filename) > 6 &&
  -                    strncmp(r->filename, "ftp://";, 6) == 0)    ) {
  +                    strncasecmp(r->filename, "ftp://";,    6) == 0)
  +                || (strlen(r->filename) > 5 &&
  +                    strncasecmp(r->filename, "ldap:",     5) == 0)
  +                || (strlen(r->filename) > 5 &&
  +                    strncasecmp(r->filename, "news:";,     5) == 0)
  +                || (strlen(r->filename) > 7 &&
  +                    strncasecmp(r->filename, "mailto:";,   7) == 0)) {
               /* it was finally rewritten to a remote URL */
   
               /* because we are in a per-dir context
  @@ -2005,10 +2017,13 @@
       i = strlen(r->filename);
       if (   prefixstrip
           && !(   r->filename[0] == '/'
  -             || (   (i > 7 && strncasecmp(r->filename, "http://";, 7) == 0)
  -                 || (i > 8 && strncasecmp(r->filename, "https://";, 8) == 0)
  +             || (   (i > 7 && strncasecmp(r->filename, "http://";,   7) == 0)
  +                 || (i > 8 && strncasecmp(r->filename, "https://";,  8) == 0)
                    || (i > 9 && strncasecmp(r->filename, "gopher://";, 9) == 0)
  -                 || (i > 6 && strncasecmp(r->filename, "ftp://";, 6) == 0)))) 
{
  +                 || (i > 6 && strncasecmp(r->filename, "ftp://";,    6) == 0)
  +                 || (i > 5 && strncasecmp(r->filename, "ldap:",     5) == 0)
  +                 || (i > 5 && strncasecmp(r->filename, "news:";,     5) == 0)
  +                 || (i > 7 && strncasecmp(r->filename, "mailto:";,   7) == 
0)))) {
           rewritelog(r, 3, "[per-dir %s] add per-dir prefix: %s -> %s%s",
                      perdir, r->filename, perdir, r->filename);
           r->filename = ap_pstrcat(r->pool, perdir, r->filename, NULL);
  @@ -2073,10 +2088,13 @@
        *  directly force an external HTTP redirect.
        */
       i = strlen(r->filename);
  -    if (   (i > 7 && strncasecmp(r->filename, "http://";, 7)   == 0)
  -        || (i > 8 && strncasecmp(r->filename, "https://";, 8)  == 0)
  +    if (   (i > 7 && strncasecmp(r->filename, "http://";,   7) == 0)
  +        || (i > 8 && strncasecmp(r->filename, "https://";,  8) == 0)
           || (i > 9 && strncasecmp(r->filename, "gopher://";, 9) == 0)
  -        || (i > 6 && strncasecmp(r->filename, "ftp://";, 6)    == 0)) {
  +        || (i > 6 && strncasecmp(r->filename, "ftp://";,    6) == 0)
  +        || (i > 5 && strncasecmp(r->filename, "ldap:",     5) == 0)
  +        || (i > 5 && strncasecmp(r->filename, "news:";,     5) == 0)
  +        || (i > 7 && strncasecmp(r->filename, "mailto:";,   7) == 0) ) {
           if (perdir == NULL) {
               rewritelog(r, 2,
                          "implicitly forcing redirect (rc=%d) with %s",
  @@ -2433,10 +2451,13 @@
       int port;
   
       i = strlen(r->filename);
  -    if (!(   (i > 7 && strncasecmp(r->filename, "http://";, 7)   == 0)
  -          || (i > 8 && strncasecmp(r->filename, "https://";, 8)  == 0)
  +    if (!(   (i > 7 && strncasecmp(r->filename, "http://";,   7) == 0)
  +          || (i > 8 && strncasecmp(r->filename, "https://";,  8) == 0)
             || (i > 9 && strncasecmp(r->filename, "gopher://";, 9) == 0)
  -          || (i > 6 && strncasecmp(r->filename, "ftp://";, 6)    == 0))) {
  +          || (i > 6 && strncasecmp(r->filename, "ftp://";,    6) == 0)
  +          || (i > 5 && strncasecmp(r->filename, "ldap:",     5) == 0)
  +          || (i > 5 && strncasecmp(r->filename, "news:";,     5) == 0)
  +          || (i > 7 && strncasecmp(r->filename, "mailto:";,   7) == 0))) {
   
           thisserver = ap_get_server_name(r);
           port = ap_get_server_port(r);
  
  
  

Reply via email to