coar        99/06/04 11:30:37

  Modified:    .        STATUS
               src      CHANGES
               src/include ap_mmn.h httpd.h
               src/main util.c
               src/modules/standard mod_autoindex.c
  Log:
        mod_autoindex was only checking for exact matches of "text/html"
        for ScanHTMLTitles, which meant that "text/html;charset=foo"
        documents wouldn't be scanned.  As a side effect of this patch,
        add ap_field_noparam(), which returns the unparameterised value
        for any HTTP field that can use '*( ";" parameter)'.
  
  PR:           4524
  
  Revision  Changes    Path
  1.701     +1 -7      apache-1.3/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.700
  retrieving revision 1.701
  diff -u -r1.700 -r1.701
  --- STATUS    1999/06/04 17:40:04     1.700
  +++ STATUS    1999/06/04 18:30:07     1.701
  @@ -1,5 +1,5 @@
     1.3 STATUS:
  -  Last modified at [$Date: 1999/06/04 17:40:04 $]
  +  Last modified at [$Date: 1999/06/04 18:30:07 $]
   
   Release:
   
  @@ -105,12 +105,6 @@
       * Tony Finch's patch to support mass virtual hosting
        Message-ID: <[EMAIL PROTECTED]>
        Status: Dean +1
  -
  -    * Ken's patch to work around exact matches of content-types (PR#4524)
  -      (Long-term fix should involve breaking this [and other fields with
  -      parameters] into pieces.)
  -     Message-ID: <[EMAIL PROTECTED]>
  -     Status: Ken +1
   
       * Brian Havard's patch to remove dependency of mod_auth_dbm on mod_auth.
         (PR#2598)
  
  
  
  1.1370    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1369
  retrieving revision 1.1370
  diff -u -r1.1369 -r1.1370
  --- CHANGES   1999/06/04 17:15:49     1.1369
  +++ CHANGES   1999/06/04 18:30:16     1.1370
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.7
   
  +  *) Fix mod_autoindex's handling of ScanHTMLTitles when file
  +     content-types are "text/html;parameters".  PR#4524  [Ken Coar]
  +
     *) Remove "mxb" support from mod_negotiation -- it was a draft feature
        never accepted into any standard, and it opens up certain DoS
        attacks.  [Koen Holtman <[EMAIL PROTECTED]>]
  
  
  
  1.37      +2 -1      apache-1.3/src/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- ap_mmn.h  1999/05/21 15:38:49     1.36
  +++ ap_mmn.h  1999/06/04 18:30:22     1.37
  @@ -218,6 +218,7 @@
    * 19990320.2           - add cmd_parms.context, ap_set_config_vectors, 
    *                        export ap_add_file_conf
    * 19990320.3           - add ap_regexec()
  + * 19990604.4           - add ap_field_noparam()
    */
   
   #define MODULE_MAGIC_COOKIE 0x41503133UL /* "AP13" */
  @@ -225,7 +226,7 @@
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
   #define MODULE_MAGIC_NUMBER_MAJOR 19990320
   #endif
  -#define MODULE_MAGIC_NUMBER_MINOR 3                     /* 0...n */
  +#define MODULE_MAGIC_NUMBER_MINOR 4                     /* 0...n */
   #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR        /* backward 
compat */
   
   /* Useful for testing for features. */
  
  
  
  1.280     +1 -0      apache-1.3/src/include/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/httpd.h,v
  retrieving revision 1.279
  retrieving revision 1.280
  diff -u -r1.279 -r1.280
  --- httpd.h   1999/06/02 07:08:18     1.279
  +++ httpd.h   1999/06/04 18:30:24     1.280
  @@ -920,6 +920,7 @@
   
   API_EXPORT(struct tm *) ap_get_gmtoff(int *tz);
   API_EXPORT(char *) ap_get_time(void);
  +API_EXPORT(char *) ap_field_noparam(pool *p, const char *intype);
   API_EXPORT(char *) ap_ht_time(pool *p, time_t t, const char *fmt, int gmt);
   API_EXPORT(char *) ap_gm_timestr_822(pool *p, time_t t);
   
  
  
  
  1.163     +17 -0     apache-1.3/src/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/util.c,v
  retrieving revision 1.162
  retrieving revision 1.163
  diff -u -r1.162 -r1.163
  --- util.c    1999/05/25 15:24:01     1.162
  +++ util.c    1999/06/04 18:30:31     1.163
  @@ -119,6 +119,23 @@
       return (time_string);
   }
   
  +/*
  + * Examine a field value (such as a media-/content-type) string and return
  + * it sans any parameters; e.g., strip off any ';charset=foo' and the like.
  + */
  +API_EXPORT(char *) ap_field_noparam(pool *p, const char *intype)
  +{
  +    const char *semi;
  +
  +    semi = strchr(intype, ';');
  +    if (semi != NULL) {
  +     while ((semi > intype) && ap_isspace(semi[-1])) {
  +         semi--;
  +     }
  +    }
  +    return ap_pstrndup(p, intype, semi - intype);
  +}
  +
   API_EXPORT(char *) ap_ht_time(pool *p, time_t t, const char *fmt, int gmt)
   {
       char ts[MAX_STRING_LEN];
  
  
  
  1.109     +7 -4      apache-1.3/src/modules/standard/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- mod_autoindex.c   1999/05/13 19:00:43     1.108
  +++ mod_autoindex.c   1999/06/04 18:30:35     1.109
  @@ -957,7 +957,8 @@
         * SSIs.
         */
        if (rr->content_type != NULL) {
  -         if (!strcasecmp("text/html", rr->content_type)) {
  +         if (!strcasecmp(ap_field_noparam(r->pool, rr->content_type),
  +                         "text/html")) {
                /* Hope everything will work... */
                emit_amble = 0;
                emit_H1 = 0;
  @@ -1038,7 +1039,8 @@
         * SSIs.
         */
        if (rr->content_type != NULL) {
  -         if (!strcasecmp("text/html", rr->content_type)) {
  +         if (!strcasecmp(ap_field_noparam(r->pool, rr->content_type),
  +                         "text/html")) {
                if (ap_run_sub_req(rr) == OK) {
                    /* worked... */
                    suppress_sig = 1;
  @@ -1079,8 +1081,9 @@
       if (r->status != HTTP_OK) {
        return NULL;
       }
  -    if (r->content_type
  -     && (!strcmp(r->content_type, "text/html")
  +    if ((r->content_type != NULL)
  +     && (!strcasecmp(ap_field_noparam(r->pool, r->content_type),
  +                     "text/html")
            || !strcmp(r->content_type, INCLUDES_MAGIC_TYPE))
        && !r->content_encoding) {
           if (!(thefile = ap_pfopen(r->pool, r->filename, "r"))) {
  
  
  

Reply via email to