cgi_show_client_tags(): Fix theoretical memory leak (CID #161209)
[privoxy.git] / cgisimple.c
index c9aa66a..34cc581 100644 (file)
@@ -1,4 +1,4 @@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.136 2016/03/17 10:40:53 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.139 2016/05/08 10:44:39 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
@@ -310,7 +310,7 @@ static void cgi_create_client_tag_form(char *form, size_t size,
    }
 
    snprintf(form, size,
-      "<form method=\"GET\" action=\"show-client-tags\" style=\"display: inline\">\n"
+      "<form method=\"GET\" action=\"client-tags\" style=\"display: inline\">\n"
       " <input type=\"hidden\" name=\"tag\" value=\"%s\">\n"
       " <input type=\"hidden\" name=\"toggle-state\" value=\"%u\">\n"
       " <input type=\"hidden\" name=\"expires\" value=\"%u\">\n"
@@ -347,14 +347,14 @@ jb_err cgi_show_client_tags(struct client_state *csp,
    const char *toggle_state;
    const char *tag_expires;
    time_t time_to_live;
-   char *client_tags = strdup_or_die("");
+   char *client_tags;
    char buf[1000];
 
    assert(csp);
    assert(rsp);
    assert(parameters);
 
-   if (NULL == (exports = default_exports(csp, "show-client-tags")))
+   if (NULL == (exports = default_exports(csp, "client-tags")))
    {
       return JB_ERR_MEMORY;
    }
@@ -385,16 +385,13 @@ jb_err cgi_show_client_tags(struct client_state *csp,
    this_tag = csp->config->client_tags;
    if (this_tag->name == NULL)
    {
-      if (!err) err = string_append(&client_tags, "<p>No tags available.</p>\n");
+      client_tags = strdup_or_die("<p>No tags available.</p>\n"));
    }
    else
    {
-      if (!err)
-      {
-         err = string_append(&client_tags, "<table border=\"1\">\n"
-            "<tr><th>Tag name</th>\n"
-            "<th>Current state</th><th>Change state</th><th>Description</th></tr>\n");
-      }
+      client_tags = strdup_or_die("<table border=\"1\">\n"
+         "<tr><th>Tag name</th>\n"
+         "<th>Current state</th><th>Change state</th><th>Description</th></tr>\n");
       while ((this_tag != NULL) && (this_tag->name != NULL))
       {
          int tag_state;
@@ -439,7 +436,7 @@ jb_err cgi_show_client_tags(struct client_state *csp,
       return JB_ERR_MEMORY;
    }
 
-   return template_fill_for_cgi(csp, "show-client-tags", exports, rsp);
+   return template_fill_for_cgi(csp, "client-tags", exports, rsp);
 }
 #endif /* def FEATURE_CLIENT_TAGS */
 
@@ -1715,6 +1712,14 @@ static jb_err show_defines(struct map *exports)
    };
 
    static const struct feature features[] = {
+      {
+         "FEATURE_64_BIT_TIME_T",
+#if (SIZEOF_TIME_T == 8)
+         1,
+#else
+         0,
+#endif
+      },
       {
          "FEATURE_ACCEPT_FILTER",
 #ifdef FEATURE_ACCEPT_FILTER