-const char loaders_rcs[] = "$Id: loaders.c,v 1.63 2007/05/14 10:41:15 fabiankeil Exp $";
+const char loaders_rcs[] = "$Id: loaders.c,v 1.70 2009/03/01 18:34:24 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loaders.c,v $
* the list of active loaders, and to automatically
* unload files that are no longer in use.
*
- * Copyright : Written by and Copyright (C) 2001-2007 the SourceForge
+ * Copyright : Written by and Copyright (C) 2001-2009 the
* Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
*
* Revisions :
* $Log: loaders.c,v $
+ * Revision 1.70 2009/03/01 18:34:24 fabiankeil
+ * Help clang understand that we aren't dereferencing
+ * NULL pointers here.
+ *
+ * Revision 1.69 2008/09/21 13:36:52 fabiankeil
+ * If change-x-forwarded-for{add} is used and the client
+ * sends multiple X-Forwarded-For headers, append the client's
+ * IP address to each one of them. "Traditionally" we would
+ * lose all but the last one.
+ *
+ * Revision 1.68 2008/09/19 15:26:28 fabiankeil
+ * Add change-x-forwarded-for{} action to block or add
+ * X-Forwarded-For headers. Mostly based on code removed
+ * before 3.0.7.
+ *
+ * Revision 1.67 2008/03/30 14:52:08 fabiankeil
+ * Rename load_actions_file() and load_re_filterfile()
+ * as they load multiple files "now".
+ *
+ * Revision 1.66 2008/03/21 11:16:30 fabiankeil
+ * Garbage-collect csp->my_ip_addr_str and csp->my_hostname.
+ *
+ * Revision 1.65 2007/12/07 18:29:23 fabiankeil
+ * Remove now-obsolete csp member x_forwarded.
+ *
+ * Revision 1.64 2007/06/01 14:12:38 fabiankeil
+ * Add unload_forward_spec() in preparation for forward-override{}.
+ *
* Revision 1.63 2007/05/14 10:41:15 fabiankeil
* Ditch the csp member cookie_list[] which isn't used anymore.
*
last_active->next = csp->next;
freez(csp->ip_addr_str);
- freez(csp->my_ip_addr_str);
- freez(csp->my_hostname);
- freez(csp->x_forwarded);
freez(csp->iob->buf);
freez(csp->error_message);
if (raw_out)
{
- if ((raw = malloc(1)) == NULL)
+ raw = strdup("");
+ if (NULL == raw)
{
return JB_ERR_MEMORY;
}
- *raw = '\0';
}
if (prefix_out)
{
- if ((prefix = malloc(1)) == NULL)
+ prefix = strdup("");
+ if (NULL == prefix)
{
freez(raw);
return JB_ERR_MEMORY;
}
- *prefix = '\0';
}
if (data_out)
{
- if ((data = malloc(1)) == NULL)
+ data = strdup("");
+ if (NULL == data)
{
freez(raw);
freez(prefix);
return JB_ERR_MEMORY;
}
- *data = '\0';
}
/* Main loop. Loop while we need more data & it's not EOF. */
/* Trim leading spaces if we're at the start of the line */
linestart = linebuf;
+ assert(NULL != data);
if (*data == '\0')
{
/* Trim leading spaces */
/*********************************************************************
*
- * Function : load_re_filterfile
+ * Function : load_re_filterfiles
*
- * Description : Load the re_filterfile.
+ * Description : Loads all the filterfiles.
* Generate a chained list of re_filterfile_spec's from
* the "FILTER: " blocks, compiling all their substitutions
* into chained lists of pcrs_job structs.
* Returns : 0 => Ok, everything else is an error.
*
*********************************************************************/
-int load_re_filterfile(struct client_state *csp)
+int load_re_filterfiles(struct client_state *csp)
{
int i;
int result;
}
else
{
+ assert(NULL != bl);
bl->next = new_bl;
}
bl = new_bl;
{
bl->joblist = dummy;
}
- else
+ else if (NULL != lastjob)
{
lastjob->next = dummy;
}