diff --git a/apache2/re_operators.c b/apache2/re_operators.c index 3d499b41..0a15e11d 100644 --- a/apache2/re_operators.c +++ b/apache2/re_operators.c @@ -464,8 +464,10 @@ static int msre_op_rsub_execute(modsec_rec *msr, msre_rule *rule, msre_var *var, msr->of_stream_changed = 1; msr->stream_output_data = (char *)stream_output_data; - if(msr->stream_output_data != NULL) - apr_cpystrn(msr->stream_output_data, data, size); + if(msr->stream_output_data != NULL) { + strncpy(msr->stream_output_data, data, size); + msr->stream_output_data[size] = '\0'; + } } @@ -485,8 +487,10 @@ static int msre_op_rsub_execute(modsec_rec *msr, msre_rule *rule, msre_var *var, msr->if_stream_changed = 1; msr->stream_input_data = (char *)stream_input_data; - if(msr->stream_input_data != NULL) - apr_cpystrn(msr->stream_input_data, data, size); + if(msr->stream_input_data != NULL) { + strncpy(msr->stream_input_data, data, size); + msr->stream_input_data[size] = '\0'; + } } if (! *error_msg) {