Commit 1b48ffc3 authored by Geoff Simmons's avatar Geoff Simmons

limit the size of user-supplied strings written to the log for error messages

parent 7eacc5df
...@@ -112,7 +112,7 @@ free_task_match(void *p) ...@@ -112,7 +112,7 @@ free_task_match(void *p)
FREE_OBJ(task_match); FREE_OBJ(task_match);
} }
#define ERR_PREFIX "match(\"%s\"): " #define ERR_PREFIX "match(\"%.40s\"): "
static VCL_BOOL static VCL_BOOL
match(VRT_CTX, vre2 * restrict vre2, VCL_STRING restrict subject, match(VRT_CTX, vre2 * restrict vre2, VCL_STRING restrict subject,
...@@ -167,7 +167,7 @@ WS_Contains(struct ws * const restrict ws, const void * const restrict ptr, ...@@ -167,7 +167,7 @@ WS_Contains(struct ws * const restrict ws, const void * const restrict ptr,
assert((char *)ptr >= ws->s && (char *)(ptr + len) <= ws->e); assert((char *)ptr >= ws->s && (char *)(ptr + len) <= ws->e);
} }
#define ERR_PREFIX "backref %ld, fallback \"%s\": " #define ERR_PREFIX "backref %ld, fallback \"%.40s\": "
static VCL_STRING static VCL_STRING
backref(VRT_CTX, VCL_INT refnum, VCL_STRING fallback, void * const groups, backref(VRT_CTX, VCL_INT refnum, VCL_STRING fallback, void * const groups,
...@@ -212,7 +212,7 @@ backref(VRT_CTX, VCL_INT refnum, VCL_STRING fallback, void * const groups, ...@@ -212,7 +212,7 @@ backref(VRT_CTX, VCL_INT refnum, VCL_STRING fallback, void * const groups,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "namedref name=\"%s\", fallback=\"%s\": " #define ERR_PREFIX "namedref name=\"%.40s\", fallback=\"%.40s\": "
static VCL_STRING static VCL_STRING
namedref(VRT_CTX, vre2 * restrict vre2, VCL_STRING name, VCL_STRING fallback, namedref(VRT_CTX, vre2 * restrict vre2, VCL_STRING name, VCL_STRING fallback,
...@@ -235,7 +235,8 @@ namedref(VRT_CTX, vre2 * restrict vre2, VCL_STRING name, VCL_STRING fallback, ...@@ -235,7 +235,8 @@ namedref(VRT_CTX, vre2 * restrict vre2, VCL_STRING name, VCL_STRING fallback,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "sub(text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX \
"sub(text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
static VCL_STRING static VCL_STRING
sub(VRT_CTX, vre2 * restrict vre2, const int all, VCL_STRING text, sub(VRT_CTX, vre2 * restrict vre2, const int all, VCL_STRING text,
...@@ -270,7 +271,8 @@ sub(VRT_CTX, vre2 * restrict vre2, const int all, VCL_STRING text, ...@@ -270,7 +271,8 @@ sub(VRT_CTX, vre2 * restrict vre2, const int all, VCL_STRING text,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "extract(text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX \
"extract(text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
static VCL_STRING static VCL_STRING
extract(VRT_CTX, vre2 * restrict vre2, VCL_STRING text, VCL_STRING rewrite, extract(VRT_CTX, vre2 * restrict vre2, VCL_STRING text, VCL_STRING rewrite,
...@@ -345,8 +347,8 @@ vmod_regex__init(const struct vrt_ctx *ctx, struct vmod_re2_regex **rep, ...@@ -345,8 +347,8 @@ vmod_regex__init(const struct vrt_ctx *ctx, struct vmod_re2_regex **rep,
longest_match, max_mem, literal, never_nl, dot_nl, longest_match, max_mem, literal, never_nl, dot_nl,
never_capture, case_sensitive, perl_classes, never_capture, case_sensitive, perl_classes,
word_boundary, one_line)) != NULL) { word_boundary, one_line)) != NULL) {
VERR(ctx, "Cannot compile '%s' in %s constructor: %s", pattern, VERR(ctx, "Cannot compile '%.40s' in %s constructor: %s",
vcl_name, err); pattern, vcl_name, err);
return; return;
} }
if (! never_capture) { if (! never_capture) {
...@@ -394,7 +396,7 @@ vmod_regex_match(const struct vrt_ctx *ctx, struct vmod_re2_regex *re, ...@@ -394,7 +396,7 @@ vmod_regex_match(const struct vrt_ctx *ctx, struct vmod_re2_regex *re,
return ret; return ret;
} }
#define ERR_PREFIX "%s.backref(ref=%ld, fallback=\"%s\"): " #define ERR_PREFIX "%s.backref(ref=%ld, fallback=\"%.40s\"): "
VCL_STRING VCL_STRING
vmod_regex_backref(VRT_CTX, struct vmod_re2_regex *re, VCL_INT refnum, vmod_regex_backref(VRT_CTX, struct vmod_re2_regex *re, VCL_INT refnum,
...@@ -427,7 +429,7 @@ vmod_regex_backref(VRT_CTX, struct vmod_re2_regex *re, VCL_INT refnum, ...@@ -427,7 +429,7 @@ vmod_regex_backref(VRT_CTX, struct vmod_re2_regex *re, VCL_INT refnum,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "%s.namedref(name=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX "%s.namedref(name=\"%.40s\", fallback=\"%.40s\"): "
VCL_STRING VCL_STRING
vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name, vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name,
...@@ -474,13 +476,13 @@ sub_method(VRT_CTX, const char * const restrict mname, const int all, ...@@ -474,13 +476,13 @@ sub_method(VRT_CTX, const char * const restrict mname, const int all,
return "**SUB METHOD FAILED**"; return "**SUB METHOD FAILED**";
} }
if (text == NULL) { if (text == NULL) {
VERR(ctx, "%s.%s(text=<undefined>, fallback=\"%s\"): " VERR(ctx, "%s.%s(text=<undefined>, fallback=\"%.40s\"): "
"text is undefined", re->vcl_name, mname, fallback); "text is undefined", re->vcl_name, mname, fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) { if (rewrite == NULL) {
VERR(ctx, "%s.%s(text=\"%s\", rewrite=<undefined>, " VERR(ctx, "%s.%s(text=\"%.40s\", rewrite=<undefined>, "
"fallback=\"%s\"): rewrite is undefined", re->vcl_name, "fallback=\"%.40s\"): rewrite is undefined", re->vcl_name,
mname, text, fallback); mname, text, fallback);
return fallback; return fallback;
} }
...@@ -513,13 +515,13 @@ vmod_regex_extract(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text, ...@@ -513,13 +515,13 @@ vmod_regex_extract(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING text,
return "**EXTRACT METHOD FAILED**"; return "**EXTRACT METHOD FAILED**";
} }
if (text == NULL) { if (text == NULL) {
VERR(ctx, "%s.extract(text=<undefined>, fallback=\"%s\"): " VERR(ctx, "%s.extract(text=<undefined>, fallback=\"%.40s\"): "
"text is undefined", re->vcl_name, fallback); "text is undefined", re->vcl_name, fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) { if (rewrite == NULL) {
VERR(ctx, "%s.extract(text=\"%s\", rewrite=<undefined>, " VERR(ctx, "%s.extract(text=\"%.40s\", rewrite=<undefined>, "
"fallback=\"%s\"): rewrite is undefined", re->vcl_name, "fallback=\"%.40s\"): rewrite is undefined", re->vcl_name,
text, fallback); text, fallback);
return fallback; return fallback;
} }
...@@ -583,7 +585,7 @@ vmod_set__fini(struct vmod_re2_set **setp) ...@@ -583,7 +585,7 @@ vmod_set__fini(struct vmod_re2_set **setp)
FREE_OBJ(set); FREE_OBJ(set);
} }
#define ERR_PREFIX "%s.add(\"%s\"): " #define ERR_PREFIX "%s.add(\"%.40s\"): "
VCL_VOID VCL_VOID
vmod_set_add(VRT_CTX, struct vmod_re2_set *set, VCL_STRING pattern) vmod_set_add(VRT_CTX, struct vmod_re2_set *set, VCL_STRING pattern)
...@@ -606,8 +608,8 @@ vmod_set_add(VRT_CTX, struct vmod_re2_set *set, VCL_STRING pattern) ...@@ -606,8 +608,8 @@ vmod_set_add(VRT_CTX, struct vmod_re2_set *set, VCL_STRING pattern)
return; return;
} }
if ((err = vre2set_add(set->set, pattern)) != NULL) { if ((err = vre2set_add(set->set, pattern)) != NULL) {
VERR(ctx, ERR_PREFIX "Cannot compile '%s': %s", set->vcl_name, VERR(ctx, ERR_PREFIX "Cannot compile '%.40s': %s",
pattern, pattern, err); set->vcl_name, pattern, pattern, err);
return; return;
} }
} }
...@@ -644,7 +646,7 @@ vmod_set_compile(VRT_CTX, struct vmod_re2_set *set) ...@@ -644,7 +646,7 @@ vmod_set_compile(VRT_CTX, struct vmod_re2_set *set)
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "%s.match(\"%s\"): " #define ERR_PREFIX "%s.match(\"%.40s\"): "
VCL_BOOL VCL_BOOL
vmod_set_match(VRT_CTX, struct vmod_re2_set *set, VCL_STRING subject) vmod_set_match(VRT_CTX, struct vmod_re2_set *set, VCL_STRING subject)
...@@ -673,7 +675,7 @@ vmod_set_match(VRT_CTX, struct vmod_re2_set *set, VCL_STRING subject) ...@@ -673,7 +675,7 @@ vmod_set_match(VRT_CTX, struct vmod_re2_set *set, VCL_STRING subject)
/* Regex function interface */ /* Regex function interface */
#define ERR_PREFIX "re2.match(pattern=\"%s\", text=\"%s\"): " #define ERR_PREFIX "re2.match(pattern=\"%.40s\", text=\"%.40s\"): "
VCL_BOOL VCL_BOOL
vmod_match(VRT_CTX, struct vmod_priv *priv, VCL_STRING pattern, vmod_match(VRT_CTX, struct vmod_priv *priv, VCL_STRING pattern,
...@@ -734,7 +736,7 @@ vmod_match(VRT_CTX, struct vmod_priv *priv, VCL_STRING pattern, ...@@ -734,7 +736,7 @@ vmod_match(VRT_CTX, struct vmod_priv *priv, VCL_STRING pattern,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "re2.backref(ref=%ld, fallback=\"%s\"): " #define ERR_PREFIX "re2.backref(ref=%ld, fallback=\"%.40s\"): "
VCL_STRING VCL_STRING
vmod_backref(VRT_CTX, struct vmod_priv *priv, VCL_INT refnum, vmod_backref(VRT_CTX, struct vmod_priv *priv, VCL_INT refnum,
...@@ -774,7 +776,7 @@ vmod_backref(VRT_CTX, struct vmod_priv *priv, VCL_INT refnum, ...@@ -774,7 +776,7 @@ vmod_backref(VRT_CTX, struct vmod_priv *priv, VCL_INT refnum,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "re2.namedref(name=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX "re2.namedref(name=\"%.40s\", fallback=\"%.40s\"): "
VCL_STRING VCL_STRING
vmod_namedref(VRT_CTX, struct vmod_priv *priv, VCL_STRING name, vmod_namedref(VRT_CTX, struct vmod_priv *priv, VCL_STRING name,
...@@ -811,7 +813,7 @@ vmod_namedref(VRT_CTX, struct vmod_priv *priv, VCL_STRING name, ...@@ -811,7 +813,7 @@ vmod_namedref(VRT_CTX, struct vmod_priv *priv, VCL_STRING name,
#undef ERR_PREFIX #undef ERR_PREFIX
#define ERR_PREFIX "re2.%s(pattern=\"%s\", text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX "re2.%s(pattern=\"%.40s\", text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
static VCL_STRING static VCL_STRING
sub_function(VRT_CTX, const char * const restrict fname, const int all, sub_function(VRT_CTX, const char * const restrict fname, const int all,
...@@ -834,19 +836,19 @@ sub_function(VRT_CTX, const char * const restrict fname, const int all, ...@@ -834,19 +836,19 @@ sub_function(VRT_CTX, const char * const restrict fname, const int all,
return "**SUB FUNCTION FAILED**"; return "**SUB FUNCTION FAILED**";
} }
if (pattern == NULL) { if (pattern == NULL) {
VERR(ctx, "re2.%s(pattern=<undefined>, fallback=\"%s\"): " VERR(ctx, "re2.%s(pattern=<undefined>, fallback=\"%.40s\"): "
"pattern is undefined", fname, fallback); "pattern is undefined", fname, fallback);
return fallback; return fallback;
} }
if (text == NULL) { if (text == NULL) {
VERR(ctx, "re2.%s(pattern=\"%s\", text=<undefined>, " VERR(ctx, "re2.%s(pattern=\"%s\", text=<undefined>, "
"fallback=\"%s\"): text is undefined", fname, pattern, "fallback=\"%.40s\"): text is undefined", fname, pattern,
fallback); fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) { if (rewrite == NULL) {
VERR(ctx, "re2.%s(pattern=\"%s\", text=\"%s\", " VERR(ctx, "re2.%s(pattern=\"%.40s\", text=\"%.40s\", "
"rewrite=<undefined>, fallback=\"%s\"): " "rewrite=<undefined>, fallback=\"%.40s\"): "
"rewrite is undefined", fname, pattern, text, fallback); "rewrite is undefined", fname, pattern, text, fallback);
return fallback; return fallback;
} }
...@@ -896,7 +898,7 @@ vmod_suball(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite, ...@@ -896,7 +898,7 @@ vmod_suball(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
perl_classes, word_boundary, one_line); perl_classes, word_boundary, one_line);
} }
#define ERR_PREFIX "re2.extract(pattern=\"%s\", text=\"%s\", rewrite=\"%s\", fallback=\"%s\"): " #define ERR_PREFIX "re2.extract(pattern=\"%.40s\", text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
VCL_STRING VCL_STRING
vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite, vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
...@@ -915,18 +917,20 @@ vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite, ...@@ -915,18 +917,20 @@ vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
return "**EXTRACT FUNCTION FAILED**"; return "**EXTRACT FUNCTION FAILED**";
} }
if (pattern == NULL) { if (pattern == NULL) {
VERR(ctx, "re2.extract(pattern=<undefined>, fallback=\"%s\"): " VERR(ctx,
"re2.extract(pattern=<undefined>, fallback=\"%.40s\"): "
"pattern is undefined", fallback); "pattern is undefined", fallback);
return fallback; return fallback;
} }
if (text == NULL) { if (text == NULL) {
VERR(ctx, "re2.extract(pattern=\"%s\", text=<undefined>, " VERR(ctx, "re2.extract(pattern=\"%.40s\", text=<undefined>, "
"fallback=\"%s\"): text is undefined", pattern, fallback); "fallback=\"%.40s\"): text is undefined", pattern,
fallback);
return fallback; return fallback;
} }
if (rewrite == NULL) { if (rewrite == NULL) {
VERR(ctx, "re2.extract(pattern=\"%s\", text=\"%s\", " VERR(ctx, "re2.extract(pattern=\"%.40s\", text=\"%.40s\", "
"rewrite=<undefined>, fallback=\"%s\"): " "rewrite=<undefined>, fallback=\"%.40s\"): "
"rewrite is undefined", pattern, text, fallback); "rewrite is undefined", pattern, text, fallback);
return fallback; return fallback;
} }
...@@ -936,8 +940,8 @@ vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite, ...@@ -936,8 +940,8 @@ vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
case_sensitive, perl_classes, word_boundary, case_sensitive, perl_classes, word_boundary,
one_line)) one_line))
!= NULL) { != NULL) {
VERR(ctx, ERR_PREFIX "Cannot compile '%s': %s", pattern, text, VERR(ctx, ERR_PREFIX "Cannot compile '%.40s': %s", pattern,
rewrite, fallback, pattern, err); text, rewrite, fallback, pattern, err);
vre2_fini(&vre2); vre2_fini(&vre2);
return fallback; return fallback;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment