Help clang understand that we aren't dereferencing
[privoxy.git] / loaders.c
index f2d8d5f..fa9a891 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.69 2008/09/21 13:36:52 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/loaders.c,v $
@@ -35,6 +35,17 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.67 2008/03/30 14:52:08 fabiankeil
  *
  * Revisions   :
  *    $Log: loaders.c,v $
+ *    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 +522,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 &&
@@ -920,6 +930,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 +1570,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 +1634,7 @@ int load_one_re_filterfile(struct client_state *csp, int fileid)
             {
                bl->joblist = dummy;
             }
-            else
+            else if (NULL != lastjob)
             {
                lastjob->next = dummy;
             }