dgaudet     98/01/13 14:21:09

  Modified:    .        STATUS
               src/modules/standard mod_rewrite.c
  Log:
  make mod_rewrite use ap_cpystrn
  
  Reviewed by:    Ralf Engelschall, Jim Jagielski
  
  Revision  Changes    Path
  1.83      +1 -6      apachen/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /export/home/cvs/apachen/STATUS,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- STATUS    1998/01/13 22:08:27     1.82
  +++ STATUS    1998/01/13 22:21:06     1.83
  @@ -78,6 +78,7 @@
       * Paul's WIN32: patch to allow for Doug's -c option
       * Dean's [PATCH] unneeded pstrdup()s (in table_*() calls)
       * Brian Havard's [Patch] OS/2 - fix up shut down
  +    * Dean's [PATCH] make mod_rewrite use ap_cpystrn
   
   Available Patches:
   
  @@ -96,12 +97,6 @@
       * Dean's [PATCH] OSF/1 serialized accept
        <[EMAIL PROTECTED]>
        Status: Dean +1, Jim +1 (on code)
  -
  -    * Dean's [PATCH] make mod_rewrite use ap_cpystrn
  -     <[EMAIL PROTECTED]>
  -     Status: waiting to find out status of Ralf's mod_rewrite restructuring
  -     Ralf says go for it now.
  -     Status: Dean +1, Jim +1
   
       * Dean's [PATCH] yet another slow function
           <[EMAIL PROTECTED]>
  
  
  
  1.60      +29 -51    apachen/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- mod_rewrite.c     1998/01/11 20:55:21     1.59
  +++ mod_rewrite.c     1998/01/13 22:21:07     1.60
  @@ -1090,11 +1090,9 @@
               n = prefix_stat(r->filename, &finfo);
               if (n == 0) {
                   if ((cp = document_root(r)) != NULL) {
  -                    strncpy(docroot, cp, sizeof(docroot)-1);
  -                    EOS_PARANOIA(docroot);
  +                    l = ap_cpystrn(docroot, cp, sizeof(docroot)) - docroot;
   
                       /* always NOT have a trailing slash */
  -                    l = strlen(docroot);
                       if (docroot[l-1] == '/') {
                           docroot[l-1] = '\0';
                       }
  @@ -1714,8 +1712,7 @@
        */
       if (strcmp(output, "-") == 0) {
           for (i = 0; p->env[i] != NULL; i++) {
  -            strncpy(env, p->env[i], sizeof(env)-1);
  -            EOS_PARANOIA(env);
  +            ap_cpystrn(env, p->env[i], sizeof(env));
               expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
               expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
               add_env_variable(r, env);
  @@ -1729,8 +1726,7 @@
        *  substitution URL string in `newuri'.
        */
       /*  1. take the output string  */
  -    strncpy(newuri, output, sizeof(newuri)-1);
  -    EOS_PARANOIA(newuri);
  +    ap_cpystrn(newuri, output, sizeof(newuri));
       /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
       expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$');
       /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
  @@ -1751,8 +1747,7 @@
        */
       for (i = 0; p->env[i] != NULL; i++) {
           /*  1. take the string  */
  -        strncpy(env, p->env[i], sizeof(env)-1);
  -        EOS_PARANOIA(env);
  +        ap_cpystrn(env, p->env[i], sizeof(env));
           /*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
           expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
           /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
  @@ -1913,8 +1908,7 @@
       /* expand the regex backreferences from the RewriteRule ($0-$9), 
          then from the last RewriteCond (%0-%9) and then expand the 
          variables (%{....}) */
  -    strncpy(input, p->input, sizeof(input)-1);
  -    EOS_PARANOIA(input);
  +    ap_cpystrn(input, p->input, sizeof(input));
       expand_backref_inbuffer(r->pool, input, sizeof(input), briRR, '$');
       expand_backref_inbuffer(r->pool, input, sizeof(input), briRC, '%');
       expand_variables_inbuffer(r, input, sizeof(input));
  @@ -2115,19 +2109,17 @@
   
           /* cut the hostname and port out of the URI */
   #ifdef APACHE_SSL
  -        strncpy(buf, r->filename+strlen(http_method(r))+3, sizeof(buf)-1);
  +        ap_cpystrn(buf, r->filename+strlen(http_method(r))+3, sizeof(buf));
   #else
  -        strncpy(buf, r->filename+7, sizeof(buf)-1);
  +        ap_cpystrn(buf, r->filename+7, sizeof(buf));
   #endif
  -        EOS_PARANOIA(buf);
           hostp = buf;
           for (cp = hostp; *cp != '\0' && *cp != '/' && *cp != ':'; cp++)
               ;
           if (*cp == ':') {
               /* set host */
               *cp++ = '\0';
  -            strncpy(host, hostp, sizeof(host)-1);
  -            EOS_PARANOIA(host);
  +            ap_cpystrn(host, hostp, sizeof(host));
               /* set port */
               portp = cp;
               for (; *cp != '\0' && *cp != '/'; cp++)
  @@ -2142,8 +2134,7 @@
           else if (*cp == '/') {
               /* set host */
               *cp = '\0';
  -            strncpy(host, hostp, sizeof(host)-1);
  -            EOS_PARANOIA(host);
  +            ap_cpystrn(host, hostp, sizeof(host));
               *cp = '/';
               /* set port */
               port = DEFAULT_PORT;
  @@ -2152,8 +2143,7 @@
           }
           else {
               /* set host */
  -            strncpy(host, hostp, sizeof(host)-1);
  -            EOS_PARANOIA(host);
  +            ap_cpystrn(host, hostp, sizeof(host));
               /* set port */
               port = DEFAULT_PORT;
               /* set remaining url */
  @@ -2246,9 +2236,8 @@
       }
   
       /* now apply the pregsub() function */
  -    strncpy(buf, pregsub(p, buf, bri->source, 
  -                         bri->nsub+1, bri->regmatch), nbuf-1);
  -    EOS_PARANOIA_SIZE(buf, nbuf);
  +    ap_cpystrn(buf, pregsub(p, buf, bri->source, 
  +                         bri->nsub+1, bri->regmatch), nbuf);
   
       if (c != '$') {
           /* restore the original $N backrefs */
  @@ -2409,8 +2398,7 @@
           }
       }
       *cpO = '\0';
  -    strncpy(uri, newuri, uri_len-1);
  -    uri[uri_len-1] = '\0';
  +    ap_cpystrn(uri, newuri, uri_len);
       return;
   }
   
  @@ -2551,19 +2539,17 @@
       if ((fp = pfopen(r->pool, file, "r")) == NULL)
           return NULL;
   
  -    strncpy(output, MAPFILE_OUTPUT, sizeof(output)-1);
  -    EOS_PARANOIA(output);
  +    ap_cpystrn(output, MAPFILE_OUTPUT, sizeof(output));
       while (fgets(line, sizeof(line), fp) != NULL) {
           if (line[strlen(line)-1] == '\n')
               line[strlen(line)-1] = '\0';
           if (regexec(lookup_map_txtfile_regexp, line, 
                       lookup_map_txtfile_regexp->re_nsub+1, 
                       lookup_map_txtfile_regmatch, 0) == 0) {
  -            strncpy(result, pregsub(r->pool, output, line, 
  +            ap_cpystrn(result, pregsub(r->pool, output, line, 
                       lookup_map_txtfile_regexp->re_nsub+1, 
                       lookup_map_txtfile_regmatch), 
  -                    sizeof(result)-1); /* substitute in output */
  -            EOS_PARANOIA(result);
  +                    sizeof(result)); /* substitute in output */
               cpT = strchr(result, ',');
               *cpT = '\0';
               curkey = result;
  @@ -2910,8 +2896,7 @@
       char *newbuf;
       newbuf = expand_variables(r, buf);
       if (strcmp(newbuf, buf) != 0) {
  -        strncpy(buf, newbuf, buf_len-1);
  -        buf[buf_len-1] = '\0';
  +        ap_cpystrn(buf, newbuf, buf_len);
       }
       return;
   }
  @@ -2924,31 +2909,30 @@
       char *cp2;
       char *cp3;
       int expanded;
  +    char *outp;
  +    char *endp;
   
  -    strncpy(input, str, sizeof(input)-1);
  -    EOS_PARANOIA(input);
  +    ap_cpystrn(input, str, sizeof(input));
       output[0] = '\0';
  +    outp = output;
  +    endp = output + sizeof(output);
       expanded = 0;
       for (cp = input; cp < input+MAX_STRING_LEN; ) {
           if ((cp2 = strstr(cp, "%{")) != NULL) {
               if ((cp3 = strstr(cp2, "}")) != NULL) {
                   *cp2 = '\0';
  -                strncpy(&output[strlen(output)], cp, 
  -                        sizeof(output)-strlen(output)-1);
  +                outp = ap_cpystrn(outp, cp, endp - outp);
   
                   cp2 += 2;
                   *cp3 = '\0';
  -                strncpy(&output[strlen(output)], lookup_variable(r, cp2),
  -                        sizeof(output)-strlen(output)-1);
  +                outp = ap_cpystrn(outp, lookup_variable(r, cp2), endp - 
outp);
   
                   cp = cp3+1;
                   expanded = 1;
                   continue;
               }
           }
  -        strncpy(&output[strlen(output)], cp, 
  -                sizeof(output)-strlen(output)-1);
  -        EOS_PARANOIA(output);
  +     outp = ap_cpystrn(outp, cp, endp - outp);
           break;
       }
       return expanded ? pstrdup(r->pool, output) : str;
  @@ -3355,9 +3339,7 @@
       output = input;
   
       /* first create a match string which always has a trailing slash */
  -    strncpy(matchbuf, match, sizeof(matchbuf)-1);
  -    EOS_PARANOIA(matchbuf);
  -    l = strlen(matchbuf);
  +    l = ap_cpystrn(matchbuf, match, sizeof(matchbuf)) - matchbuf;
       if (matchbuf[l-1] != '/') {
          matchbuf[l] = '/';
          matchbuf[l+1] = '\0';
  @@ -3369,9 +3351,7 @@
           output = pstrdup(r->pool, output+l); 
   
           /* and now add the base-URL as replacement prefix */
  -        strncpy(substbuf, subst, sizeof(substbuf)-1);
  -        EOS_PARANOIA(substbuf);
  -        l = strlen(substbuf);
  +        l = ap_cpystrn(substbuf, subst, sizeof(substbuf)) - substbuf;
           if (substbuf[l-1] != '/') {
              substbuf[l] = '/';
              substbuf[l+1] = '\0';
  @@ -3480,8 +3460,7 @@
           n = ((cp-s) > MAX_STRING_LEN-1 ? MAX_STRING_LEN-1 : (cp-s));
           memcpy(var, s, n);
           var[n] = '\0';
  -        strncpy(val, cp+1, sizeof(val)-1);
  -        EOS_PARANOIA(val);
  +        ap_cpystrn(val, cp+1, sizeof(val));
           table_set(r->subprocess_env, var, val);
           rewritelog(r, 5, "setting env variable '%s' to '%s'", var, val);
       }
  @@ -3500,8 +3479,7 @@
       char curpath[LONG_STRING_LEN];
       char *cp;
   
  -    strncpy(curpath, path, sizeof(curpath)-1);
  -    EOS_PARANOIA(curpath);
  +    ap_cpystrn(curpath, path, sizeof(curpath));
       if (curpath[0] != '/') 
           return 0;
       if ((cp = strchr(curpath+1, '/')) != NULL)
  
  
  

Reply via email to