Advertise IPv6 support on the show-status page.
[privoxy.git] / loaders.c
index f2d8d5f..f33e2c2 100644 (file)
--- a/loaders.c
+++ b/loaders.c
@@ -1,4 +1,4 @@
-const char loaders_rcs[] = "$Id: loaders.c,v 1.67 2008/03/30 14:52:08 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 $
@@ -8,7 +8,7 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.67 2008/03/30 14:52:08 fabiankeil
  *                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
@@ -35,6 +35,21 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.67 2008/03/30 14:52:08 fabiankeil
  *
  * 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".
@@ -511,7 +526,6 @@ void sweep(void)
 
          freez(csp->ip_addr_str);
          freez(csp->iob->buf);
-         freez(csp->x_forwarded_for);
          freez(csp->error_message);
 
          if (csp->action->flags & ACTION_FORWARD_OVERRIDE &&
@@ -863,30 +877,30 @@ jb_err edit_read_line(FILE *fp,
 
    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. */
@@ -920,6 +934,7 @@ jb_err edit_read_line(FILE *fp,
 
       /* Trim leading spaces if we're at the start of the line */
       linestart = linebuf;
+      assert(NULL != data);
       if (*data == '\0')
       {
          /* Trim leading spaces */
@@ -1559,6 +1574,7 @@ int load_one_re_filterfile(struct client_state *csp, int fileid)
          }
          else
          {
+            assert(NULL != bl);
             bl->next = new_bl;
          }
          bl = new_bl;
@@ -1622,7 +1638,7 @@ int load_one_re_filterfile(struct client_state *csp, int fileid)
             {
                bl->joblist = dummy;
             }
-            else
+            else if (NULL != lastjob)
             {
                lastjob->next = dummy;
             }