Skip to content

Commit 26161b9

Browse files
authored
Merge commit from fork
fix: add ARGS to sanitize list only if it's not added yet
2 parents 7d73811 + fdfc2d5 commit 26161b9

File tree

4 files changed

+5
-1
lines changed

4 files changed

+5
-1
lines changed

apache2/modsecurity.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,7 @@ struct msc_arg {
693693
unsigned int value_origin_offset;
694694
unsigned int value_origin_len;
695695
const char *origin;
696+
unsigned int marked_for_sanitization;
696697
};
697698

698699
struct msc_string {

apache2/msc_json.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ int json_add_argument(modsec_rec *msr, const char *value, unsigned length)
7070
return 0;
7171
}
7272

73+
arg->marked_for_sanitization = 0;
7374
apr_table_addn(msr->arguments,
7475
log_escape_nq_ex(msr->mp, arg->name, arg->name_len), (void *) arg);
7576

apache2/msc_parsers.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ void add_argument(modsec_rec *msr, apr_table_t *arguments, msc_arg *arg)
350350
assert(msr != NULL);
351351
assert(arguments != NULL);
352352
assert(arg != NULL);
353+
arg->marked_for_sanitization = 0;
353354
if (msr->txcfg->debuglog_level >= 5) {
354355
msr_log(msr, 5, "Adding request argument (%s): name \"%s\", value \"%s\"",
355356
arg->origin, log_escape_ex(msr->mp, arg->name, arg->name_len),

apache2/re_actions.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1527,8 +1527,9 @@ static apr_status_t msre_action_sanitizeMatched_execute(modsec_rec *msr, apr_poo
15271527
for (i = 0; i < tarr->nelts; i++) {
15281528
msc_arg *arg = (msc_arg *)telts[i].val;
15291529
assert(arg != NULL);
1530-
if (strcasecmp(sargname, arg->name) == 0) {
1530+
if (arg->marked_for_sanitization == 0 && strcasecmp(sargname, arg->name) == 0) {
15311531
apr_table_addn(msr->arguments_to_sanitize, arg->name, (void *)arg);
1532+
arg->marked_for_sanitization = 1;
15321533
}
15331534
}
15341535
break;

0 commit comments

Comments
 (0)