Changed version string only to 3.0.12
[privoxy.git] / cgi.c
diff --git a/cgi.c b/cgi.c
index 072c5c5..3bdeda3 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-const char cgi_rcs[] = "$Id: cgi.c,v 1.109 2008/07/26 09:40:27 fabiankeil Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.115 2009/03/01 18:28:23 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgi.c,v $
@@ -38,6 +38,30 @@ const char cgi_rcs[] = "$Id: cgi.c,v 1.109 2008/07/26 09:40:27 fabiankeil Exp $"
  *
  * Revisions   :
  *    $Log: cgi.c,v $
+ *    Revision 1.115  2009/03/01 18:28:23  fabiankeil
+ *    Help clang understand that we aren't dereferencing
+ *    NULL pointers here.
+ *
+ *    Revision 1.114  2008/12/04 18:15:04  fabiankeil
+ *    Fix some cparser warnings.
+ *
+ *    Revision 1.113  2008/09/04 08:13:58  fabiankeil
+ *    Prepare for critical sections on Windows by adding a
+ *    layer of indirection before the pthread mutex functions.
+ *
+ *    Revision 1.112  2008/08/31 16:08:12  fabiankeil
+ *    "View the request headers" isn't more equal than the other
+ *    menu items and thus doesn't need a trailing dot either.
+ *
+ *    Revision 1.111  2008/08/31 15:59:02  fabiankeil
+ *    There's no reason to let remote toggling support depend
+ *    on FEATURE_CGI_EDIT_ACTIONS, so make sure it doesn't.
+ *
+ *    Revision 1.110  2008/08/31 14:55:43  fabiankeil
+ *    Add a @date@ symbol to include a date(1)-like time string
+ *    in templates. Modified version of the patch Endre Szabo
+ *    submitted in #2026468.
+ *
  *    Revision 1.109  2008/07/26 09:40:27  fabiankeil
  *    Remove the unconditional block in get_http_time().
  *    It's pointless now that it's no longer used to limit
@@ -642,9 +666,9 @@ const char cgi_rcs[] = "$Id: cgi.c,v 1.109 2008/07/26 09:40:27 fabiankeil Exp $"
 #include "miscutil.h"
 #include "cgisimple.h"
 #include "jbsockets.h"
-#ifdef FEATURE_CGI_EDIT_ACTIONS
+#if defined(FEATURE_CGI_EDIT_ACTIONS) || defined(FEATURE_TOGGLE)
 #include "cgiedit.h"
-#endif /* def FEATURE_CGI_EDIT_ACTIONS */
+#endif /* defined(FEATURE_CGI_EDIT_ACTIONS) || defined (FEATURE_TOGGLE) */
 #include "loadcfg.h"
 /* loadcfg.h is for global_toggle_state only */
 #ifdef FEATURE_PTHREAD
@@ -684,19 +708,19 @@ static const struct cgi_dispatcher cgi_dispatchers[] = {
           TRUE }, 
    { "show-request", 
          cgi_show_request,  
-         "View the request headers.",
+         "View the request headers",
          TRUE }, 
    { "show-url-info",
          cgi_show_url_info, 
          "Look up which actions apply to a URL and why",
          TRUE },
-#ifdef FEATURE_CGI_EDIT_ACTIONS
 #ifdef FEATURE_TOGGLE
    { "toggle",
          cgi_toggle, 
          "Toggle Privoxy on or off",
          FALSE },
 #endif /* def FEATURE_TOGGLE */
+#ifdef FEATURE_CGI_EDIT_ACTIONS
    { "edit-actions", /* Edit the actions list */
          cgi_edit_actions, 
          NULL, FALSE },
@@ -1484,6 +1508,7 @@ struct http_response *error_response(struct client_state *csp,
        * XXX: While the template is called forwarding-failed,
        * it currently only handles socks forwarding failures.
        */
+      assert(fwd != NULL);
       assert(fwd->type != SOCKS_NONE);
 
       /*
@@ -1982,7 +2007,7 @@ void get_http_time(int time_offset, char *buf, size_t buffer_size)
 #endif
 
    assert(buf);
-   assert(buffer_size > 29);
+   assert(buffer_size > (size_t)29);
 
    time(&current_time);
 
@@ -1992,9 +2017,9 @@ void get_http_time(int time_offset, char *buf, size_t buffer_size)
 #if HAVE_GMTIME_R
    t = gmtime_r(&current_time, &dummy);
 #elif FEATURE_PTHREAD
-   pthread_mutex_lock(&gmtime_mutex);
+   privoxy_mutex_lock(&gmtime_mutex);
    t = gmtime(&current_time);
-   pthread_mutex_unlock(&gmtime_mutex);
+   privoxy_mutex_unlock(&gmtime_mutex);
 #else
    t = gmtime(&current_time);
 #endif
@@ -2041,16 +2066,16 @@ static void get_locale_time(char *buf, size_t buffer_size)
 #endif
 
    assert(buf);
-   assert(buffer_size > 29);
+   assert(buffer_size > (size_t)29);
 
    time(&current_time);
 
 #if HAVE_LOCALTIME_R
    timeptr = localtime_r(&current_time, &dummy);
 #elif FEATURE_PTHREAD
-   pthread_mutex_lock(&localtime_mutex);
+   privoxy_mutex_lock(&localtime_mutex);
    timeptr = localtime(&current_time);
-   pthread_mutex_unlock(&localtime_mutex);
+   privoxy_mutex_unlock(&localtime_mutex);
 #else
    timeptr = localtime(&current_time);
 #endif
@@ -2392,10 +2417,10 @@ jb_err template_load(const struct client_state *csp, char **template_ptr,
     * Read the file, ignoring comments, and honoring #include
     * statements, unless we're already called recursively.
     *
-    * FIXME: The comment handling could break with lines >BUFFER_SIZE long.
-    *        This is unlikely in practise.
+    * XXX: The comment handling could break with lines lengths > sizeof(buf).
+    *      This is unlikely in practise.
     */
-   while (fgets(buf, BUFFER_SIZE, fp))
+   while (fgets(buf, sizeof(buf), fp))
    {
       if (!recursive && !strncmp(buf, "#include ", 9))
       {
@@ -2465,7 +2490,7 @@ jb_err template_fill(char **template_ptr, const struct map *exports)
    char buf[BUFFER_SIZE];
    char *tmp_out_buffer;
    char *file_buffer;
-   size_t  size;
+   size_t size;
    int error;
    const char *flags;
 
@@ -2488,7 +2513,7 @@ jb_err template_fill(char **template_ptr, const struct map *exports)
           * character and allow backreferences ($1 etc) in the
           * "replace with" text.
           */
-         snprintf(buf, BUFFER_SIZE, "%s", m->name + 1);
+         snprintf(buf, sizeof(buf), "%s", m->name + 1);
          flags = "sigU";
       }
       else
@@ -2501,10 +2526,9 @@ jb_err template_fill(char **template_ptr, const struct map *exports)
          flags = "sigTU";
 
          /* Enclose name in @@ */
-         snprintf(buf, BUFFER_SIZE, "@%s@", m->name);
+         snprintf(buf, sizeof(buf), "@%s@", m->name);
       }
 
-
       log_error(LOG_LEVEL_CGI, "Substituting: s/%s/%s/%s", buf, m->value, flags);
 
       /* Make and run job. */
@@ -2752,7 +2776,7 @@ jb_err map_block_killer(struct map *exports, const char *name)
 
    assert(exports);
    assert(name);
-   assert(strlen(name) < 490);
+   assert(strlen(name) < (size_t)490);
 
    snprintf(buf, sizeof(buf), "if-%s-start.*if-%s-end", name, name);
    return map(exports, buf, 1, "", 1);
@@ -2782,7 +2806,7 @@ jb_err map_block_keep(struct map *exports, const char *name)
 
    assert(exports);
    assert(name);
-   assert(strlen(name) < 490);
+   assert(strlen(name) < (size_t)490);
 
    snprintf(buf, sizeof(buf), "if-%s-start", name);
    err = map(exports, buf, 1, "", 1);
@@ -2829,7 +2853,7 @@ jb_err map_conditional(struct map *exports, const char *name, int choose_first)
 
    assert(exports);
    assert(name);
-   assert(strlen(name) < 480);
+   assert(strlen(name) < (size_t)480);
 
    snprintf(buf, sizeof(buf), (choose_first
       ? "else-not-%s@.*@endif-%s"