Re-doing rsub membory allocation task

This commit is contained in:
brenosilva
2012-02-12 13:09:20 +00:00
parent ca8ec55c7b
commit 88cdccc55e

View File

@@ -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) {