-const char filters_rcs[] = "$Id: filters.c,v 1.190 2014/10/18 11:26:48 fabiankeil Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.194 2015/08/21 10:58:53 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
return NULL;
}
- filter_output = malloc_or_die(*size);
+ /* Allocate at least one byte */
+ filter_output = malloc_or_die(*size + 1);
new_size = 0;
while (!feof(fp) && !ferror(fp))
char *p;
/* Could be considered wasteful if the content is 'large'. */
- *size = (*size != 0) ? *size * 2 : READ_LENGTH;
+ *size += (*size >= READ_LENGTH) ? *size : READ_LENGTH;
p = realloc(filter_output, *size);
if (p == NULL)
}
filter_output = p;
}
+ assert(new_size + READ_LENGTH < *size);
len = fread(&filter_output[new_size], 1, READ_LENGTH, fp);
if (len > 0)
{
* the content type and action settings.
*/
if ((csp->content_type & CT_TEXT) &&
- (csp->rlist != NULL) &&
(!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER])))
{
filter_function = pcrs_filter_response;
#ifdef FEATURE_EXTERNAL_FILTERS
if ((csp->content_type & CT_TEXT) &&
- (csp->rlist != NULL) &&
!list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER]))
{
struct list_entry *filtername;
* the content type and action settings.
*/
if ((csp->content_type & CT_TEXT) &&
- (csp->rlist != NULL) &&
(!list_is_empty(csp->action->multi[ACTION_MULTI_FILTER]) ||
!list_is_empty(csp->action->multi[ACTION_MULTI_EXTERNAL_FILTER])))
{