-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.124 2014/05/20 11:55:24 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.130 2014/10/18 11:26:31 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
return JB_ERR_MEMORY;
}
- rsp->status = strdup("404 Privoxy configuration page not found");
- if (rsp->status == NULL)
- {
- free_map(exports);
- return JB_ERR_MEMORY;
- }
+ rsp->status = strdup_or_die("404 Privoxy configuration page not found");
return template_fill_for_cgi(csp, "cgi-error-404", exports, rsp);
}
* CGI Parameters : none
*
* Returns : JB_ERR_OK on success
- * JB_ERR_MEMORY on out-of-memory error.
*
*********************************************************************/
jb_err cgi_die (struct client_state *csp,
rsp->head_length = 0;
rsp->is_static = 0;
- rsp->body = strdup(body);
- rsp->status = strdup(status);
-
- if ((rsp->body == NULL) || (rsp->status == NULL))
- {
- return JB_ERR_MEMORY;
- }
+ rsp->body = strdup_or_die(body);
+ rsp->status = strdup_or_die(status);
return JB_ERR_OK;
}
*/
if (imagetype == 'r')
{
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- return JB_ERR_MEMORY;
- }
+ rsp->status = strdup_or_die("302 Local Redirect from Privoxy");
if (enlist_unique_header(rsp->headers, "Location",
csp->action->string[ACTION_STRING_IMAGE_BLOCKER]))
{
int i;
struct content_type
{
- const char *extension;
- const char *content_type;
+ const char extension[6];
+ const char content_type[11];
};
static const struct content_type content_types[] =
{
}
#endif /* ndef CGI_EDIT_ACTIONS */
+ if (!err) err = map(exports, "force-prefix", 1, FORCE_PREFIX, 1);
+
if (err)
{
free_map(exports);
/*
* Get the url= parameter (if present) and remove any leading/trailing spaces.
*/
- url_param = strdup(lookup(parameters, "url"));
- if (url_param == NULL)
- {
- free_map(exports);
- return JB_ERR_MEMORY;
- }
+ url_param = strdup_or_die(lookup(parameters, "url"));
chomp(url_param);
/*
* No prefix or at least no prefix before
* the first slash - assume http://
*/
- char *url_param_prefixed = strdup("http://");
+ char *url_param_prefixed = strdup_or_die("http://");
if (JB_ERR_OK != string_join(&url_param_prefixed, url_param))
{
map_block_killer(exports, "privoxy-is-toggled-off")
)
{
+ freez(url_param);
free_map(exports);
return JB_ERR_MEMORY;
}
}
}
- matches = strdup("<table summary=\"\" class=\"transparent\">");
+ matches = strdup_or_die("<table summary=\"\" class=\"transparent\">");
for (i = 0; i < MAX_AF_FILES; i++)
{
(void)csp;
(void)parameters;
- rsp->body = strdup(
+ rsp->body = strdup_or_die(
"# This is the Privoxy control interface.\n"
"# It isn't very useful to index it, and you're likely to break stuff.\n"
"# So go away!\n"
"User-agent: *\n"
"Disallow: /\n"
"\n");
- if (rsp->body == NULL)
- {
- return JB_ERR_MEMORY;
- }
err = enlist_unique(rsp->headers, "Content-Type: text/plain", 13);
*********************************************************************/
static char *show_rcs(void)
{
- char *result = strdup("");
+ char *result = strdup_or_die("");
char buf[BUFFER_SIZE];
/* Instead of including *all* dot h's in the project (thus creating a
s = html_encode_and_free_original(s);
if (NULL == s)
{
+ free_map(exports);
return JB_ERR_MEMORY;
}
{
err = JB_ERR_MEMORY;
}
- else if (!fread(*buffer, *length, 1, fp))
+ else if (1 != fread(*buffer, *length, 1, fp))
{
/*
- * May happen if the file size changes between fseek() and
- * fread(). If it does, we just log it and serve what we got.
+ * May theoretically happen if the file size changes between
+ * fseek() and fread() because it's edited in-place. Privoxy
+ * and common text editors don't do that, thus we just fail.
*/
log_error(LOG_LEVEL_ERROR,
"Couldn't completely read file %s.", filename);
+ freez(*buffer);
err = JB_ERR_FILE;
}