mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2026-01-15 07:57:10 +03:00
Re-doing rsub membory allocation task
This commit is contained in:
@@ -449,48 +449,54 @@ static int msre_op_rsub_execute(modsec_rec *msr, msre_rule *rule, msre_var *var,
|
|||||||
|
|
||||||
if(msr->stream_output_data != NULL && output_body == 1) {
|
if(msr->stream_output_data != NULL && output_body == 1) {
|
||||||
|
|
||||||
char *stream_output_data = NULL;
|
memset(msr->stream_output_data, 0x0, msr->stream_output_length);
|
||||||
|
free(msr->stream_output_data);
|
||||||
|
msr->stream_output_data = NULL;
|
||||||
|
msr->stream_output_length = 0;
|
||||||
|
|
||||||
stream_output_data = (char *)realloc(msr->stream_output_data, size+1);
|
msr->stream_output_data = (char *)malloc(size+1);
|
||||||
msr->stream_output_length = size;
|
|
||||||
|
|
||||||
if(stream_output_data == NULL) {
|
if(msr->stream_output_data == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(stream_output_data, 0x00, size+1);
|
msr->stream_output_length = size;
|
||||||
|
memset(msr->stream_output_data, 0x0, size+1);
|
||||||
|
|
||||||
var->value_len = size;
|
|
||||||
msr->of_stream_changed = 1;
|
msr->of_stream_changed = 1;
|
||||||
|
|
||||||
msr->stream_output_data = (char *)stream_output_data;
|
strncpy(msr->stream_output_data, data, size);
|
||||||
if(msr->stream_output_data != NULL) {
|
msr->stream_output_data[size] = '\0';
|
||||||
strncpy(msr->stream_output_data, data, size);
|
|
||||||
msr->stream_output_data[size] = '\0';
|
var->value_len = size;
|
||||||
}
|
var->value = apr_pstrmemdup(msr->mp, msr->stream_output_data, size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(msr->stream_input_data != NULL && input_body == 1) {
|
if(msr->stream_input_data != NULL && input_body == 1) {
|
||||||
char *stream_input_data = NULL;
|
|
||||||
|
|
||||||
stream_input_data = (char *)realloc(msr->stream_input_data, size+1);
|
memset(msr->stream_input_data, 0x0, msr->stream_input_length);
|
||||||
msr->stream_input_length = size;
|
free(msr->stream_input_data);
|
||||||
|
msr->stream_input_data = NULL;
|
||||||
|
msr->stream_input_length = 0;
|
||||||
|
|
||||||
if(stream_input_data == NULL) {
|
msr->stream_input_data = (char *)malloc(size+1);
|
||||||
|
|
||||||
|
if(msr->stream_input_data == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(stream_input_data, 0x00, size+1);
|
msr->stream_input_length = size;
|
||||||
|
memset(msr->stream_input_data, 0x0, size+1);
|
||||||
|
|
||||||
var->value_len = size;
|
|
||||||
msr->if_stream_changed = 1;
|
msr->if_stream_changed = 1;
|
||||||
|
|
||||||
msr->stream_input_data = (char *)stream_input_data;
|
strncpy(msr->stream_input_data, data, size);
|
||||||
if(msr->stream_input_data != NULL) {
|
msr->stream_input_data[size] = '\0';
|
||||||
strncpy(msr->stream_input_data, data, size);
|
|
||||||
msr->stream_input_data[size] = '\0';
|
var->value_len = size;
|
||||||
}
|
var->value = apr_pstrmemdup(msr->mp, msr->stream_input_data, size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! *error_msg) {
|
if (! *error_msg) {
|
||||||
|
|||||||
Reference in New Issue
Block a user