Discussion:
svn commit: r1631983 - /httpd/httpd/trunk/modules/filters/mod_substitute.c
r***@apache.org
2014-10-15 10:02:31 UTC
Permalink
Author: rjung
Date: Wed Oct 15 10:02:31 2014
New Revision: 1631983

URL: http://svn.apache.org/r1631983
Log:
mod_substitute: No real functional change, but:
- define default for maximum line length
indepenent of MAX_STRING_LEN
- Clarify line length check with a comment
- add supported 'b' suffix to directive
description

Modified:
httpd/httpd/trunk/modules/filters/mod_substitute.c

Modified: httpd/httpd/trunk/modules/filters/mod_substitute.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/mod_substitute.c?rev=1631983&r1=1631982&r2=1631983&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/filters/mod_substitute.c (original)
+++ httpd/httpd/trunk/modules/filters/mod_substitute.c Wed Oct 15 10:02:31 2014
@@ -38,7 +38,7 @@
* Therefore we limit the resulting length of the line.
* This is the default value.
*/
-#define AP_SUBST_MAX_LINE_LENGTH (128*MAX_STRING_LEN)
+#define AP_SUBST_MAX_LINE_LENGTH (1024*1024)

static const char substitute_filter_name[] = "SUBSTITUTE";

@@ -243,9 +243,13 @@ static apr_status_t do_pattmatch(ap_filt
apr_status_t rv;
have_match = 1;
if (script->flatten && !force_quick) {
- /* copy bytes before the match */
+ /* check remaining buffer size */
+ /* Note that the last param in ap_varbuf_regsub below
+ * must stay positive. If it gets 0, it would mean
+ * unlimited space available. */
if (vb.strlen + regm[0].rm_so >= cfg->max_line_length)
return APR_ENOMEM;
+ /* copy bytes before the match */
if (regm[0].rm_so > 0)
ap_varbuf_strmemcat(&vb, pos, regm[0].rm_so);
/* add replacement string, last argument is unsigned! */
@@ -672,7 +676,7 @@ static const char *set_max_line_length(c
if (rv != APR_SUCCESS || max < 0)
{
return "SubstituteMaxLineLength must be a non-negative integer optionally "
- "suffixed with 'k', 'm' or 'g'.";
+ "suffixed with 'b', 'k', 'm' or 'g'.";
}
dcfg->max_line_length = (apr_size_t)max;
dcfg->max_line_length_set = 1;

Loading...