You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by je...@apache.org on 2004/03/09 00:27:31 UTC

cvs commit: httpd-2.0/modules/metadata mod_usertrack.c

jerenkrantz    2004/03/08 15:27:31

  Modified:    .        CHANGES
               modules/metadata mod_usertrack.c
  Log:
  Fix bug in mod_usertrack when no CookieName is set.
  
  PR: 24483
  Submitted by:	Manni Wood <manniwood planet-save.com>
  Reviewed by:	Cliff Woolley, Jim Jagielski
  
  Revision  Changes    Path
  1.1417    +3 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1416
  retrieving revision 1.1417
  diff -u -u -r1.1416 -r1.1417
  --- CHANGES	7 Mar 2004 22:07:55 -0000	1.1416
  +++ CHANGES	8 Mar 2004 23:27:31 -0000	1.1417
  @@ -2,6 +2,9 @@
   
     [Remove entries to the current 2.0 section below, when backported]
   
  +  *) Fix bug in mod_usertrack when no CookieName is set.  PR 24483.
  +     [Manni Wood <manniwood planet-save.com>]
  +
     *) Remove compile-time length limit on request strings. Length is
        now enforced solely with the LimitRequestLine config directive.
        [Paul J. Reder]
  
  
  
  1.49      +21 -10    httpd-2.0/modules/metadata/mod_usertrack.c
  
  Index: mod_usertrack.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/metadata/mod_usertrack.c,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -u -r1.48 -r1.49
  --- mod_usertrack.c	9 Feb 2004 20:29:21 -0000	1.48
  +++ mod_usertrack.c	8 Mar 2004 23:27:31 -0000	1.49
  @@ -156,6 +156,20 @@
    * which has three subexpressions, $0..$2 */
   #define NUM_SUBS 3
   
  +static void set_and_comp_regexp(cookie_dir_rec *dcfg,
  +                                apr_pool_t *p,
  +                                const char *cookie_name)
  +{
  +    /* The goal is to end up with this regexp,
  +     * ^cookie_name=([^;]+)|;[\t]+cookie_name=([^;]+)
  +     * with cookie_name obviously substituted either
  +     * with the real cookie name set by the user in httpd.conf, or with the
  +     * default COOKIE_NAME. */
  +    dcfg->regexp_string = apr_pstrcat(p, "^", cookie_name, "=([^;]+)|;[ \t]+", cookie_name, "=([^;]+)", NULL);
  +
  +    dcfg->regexp = ap_pregcomp(p, dcfg->regexp_string, REG_EXTENDED);
  +}
  +
   static int spot_cookie(request_rec *r)
   {
       cookie_dir_rec *dcfg = ap_get_module_config(r->per_dir_config,
  @@ -214,6 +228,11 @@
       dcfg->cookie_domain = NULL;
       dcfg->style = CT_UNSET;
       dcfg->enabled = 0;
  +
  +    /* In case the user does not use the CookieName directive,
  +     * we need to compile the regexp for the default cookie name. */
  +    set_and_comp_regexp(dcfg, p, COOKIE_NAME);
  +
       return dcfg;
   }
   
  @@ -299,18 +318,10 @@
   {
       cookie_dir_rec *dcfg = (cookie_dir_rec *) mconfig;
   
  -    /* The goal is to end up with this regexp,
  -     * ^cookie_name=([^;]+)|;[ \t]+cookie_name=([^;]+)
  -     * with cookie_name
  -     * obviously substituted with the real cookie name set by the
  -     * user in httpd.conf. */
  -    dcfg->regexp_string = apr_pstrcat(cmd->pool, "^", name,
  -                                      "=([^;]+)|;[ \t]+", name,
  -                                      "=([^;]+)", NULL);
  -
       dcfg->cookie_name = apr_pstrdup(cmd->pool, name);
   
  -    dcfg->regexp = ap_pregcomp(cmd->pool, dcfg->regexp_string, REG_EXTENDED);
  +    set_and_comp_regexp(dcfg, cmd->pool, name);
  +
       if (dcfg->regexp == NULL) {
           return "Regular expression could not be compiled.";
       }