Skip to content

Commit 8cfb911

Browse files
authored
Merge pull request #3226 from airween/v2/mpinvcharreqbody
feat: Check if the MP header contains invalid character
2 parents 935e68c + e6e3417 commit 8cfb911

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

apache2/msc_multipart.c

+11-1
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ static int multipart_process_part_header(modsec_rec *msr, char **error_msg) {
402402
if (msr->mpd->mpp->last_header_line != NULL) {
403403
*(char **)apr_array_push(msr->mpd->mpp->header_lines) = msr->mpd->mpp->last_header_line;
404404
msr_log(msr, 9, "Multipart: Added part header line \"%s\"", msr->mpd->mpp->last_header_line);
405-
}
405+
}
406406

407407
data = msr->mpd->buf;
408408

@@ -424,6 +424,16 @@ static int multipart_process_part_header(modsec_rec *msr, char **error_msg) {
424424
return -1;
425425
}
426426

427+
/* check if multipart header contains any invalid characters */
428+
char *ch = header_name;
429+
while(*ch != '\0') {
430+
if (*ch < 33 || *ch > 126) {
431+
*error_msg = apr_psprintf(msr->mp, "Multipart: Invalid part header (contains invalid character).");
432+
return -1;
433+
}
434+
ch++;
435+
}
436+
427437
/* extract the value value */
428438
data++;
429439
while((*data == '\t') || (*data == ' ')) data++;

apache2/re_variables.c

-1
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,6 @@ static int var_reqbody_processor_error_msg_generate(modsec_rec *msr, msre_var *v
616616
{
617617
assert(msr != NULL);
618618
assert(var != NULL);
619-
assert(rule != NULL);
620619
assert(vartab != NULL);
621620
assert(mptmp != NULL);
622621
msre_var *rvar = apr_pmemdup(mptmp, var, sizeof(msre_var));

0 commit comments

Comments
 (0)