projects
/
privoxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bump copyright
[privoxy.git]
/
cgi.c
diff --git
a/cgi.c
b/cgi.c
index
6c78806
..
d60166f
100644
(file)
--- a/
cgi.c
+++ b/
cgi.c
@@
-7,7
+7,7
@@
* This only contains the framework functions, the
* actual handler functions are declared elsewhere.
*
* This only contains the framework functions, the
* actual handler functions are declared elsewhere.
*
- * Copyright : Written by and Copyright (C) 2001-202
0
+ * Copyright : Written by and Copyright (C) 2001-202
1
* members of the Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* members of the Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
@@
-221,6
+221,9
@@
static const struct cgi_dispatcher cgi_dispatchers[] = {
{ "user-manual",
cgi_send_user_manual,
NULL, TRUE /* Send user-manual */ },
{ "user-manual",
cgi_send_user_manual,
NULL, TRUE /* Send user-manual */ },
+ { "wpad.dat",
+ cgi_send_wpad,
+ NULL, TRUE /* Send wpad.dat proxy autoconfiguration file */ },
{ NULL, /* NULL Indicates end of list and default page */
cgi_error_404,
NULL, TRUE /* Unknown CGI page */ }
{ NULL, /* NULL Indicates end of list and default page */
cgi_error_404,
NULL, TRUE /* Unknown CGI page */ }
@@
-1196,7
+1199,8
@@
jb_err cgi_error_no_template(const struct client_state *csp,
").</p>\n"
"</body>\n"
"</html>\n";
").</p>\n"
"</body>\n"
"</html>\n";
- const size_t body_size = strlen(body_prefix) + strlen(template_name) + strlen(body_suffix) + 1;
+ size_t body_size = strlen(body_prefix) + strlen(body_suffix) + 1;
+ const char *encoded_template_name;
assert(csp);
assert(rsp);
assert(csp);
assert(rsp);
@@
-1210,9
+1214,17
@@
jb_err cgi_error_no_template(const struct client_state *csp,
rsp->head_length = 0;
rsp->is_static = 0;
rsp->head_length = 0;
rsp->is_static = 0;
+ encoded_template_name = html_encode(template_name);
+ if (encoded_template_name == NULL)
+ {
+ return JB_ERR_MEMORY;
+ }
+
+ body_size += strlen(encoded_template_name);
rsp->body = malloc_or_die(body_size);
strlcpy(rsp->body, body_prefix, body_size);
rsp->body = malloc_or_die(body_size);
strlcpy(rsp->body, body_prefix, body_size);
- strlcat(rsp->body, template_name, body_size);
+ strlcat(rsp->body, encoded_template_name, body_size);
+ freez(encoded_template_name);
strlcat(rsp->body, body_suffix, body_size);
rsp->status = strdup(status);
strlcat(rsp->body, body_suffix, body_size);
rsp->status = strdup(status);
@@
-2011,7
+2023,7
@@
jb_err template_fill(char **template_ptr, const struct map *exports)
char buf[BUFFER_SIZE];
char *tmp_out_buffer;
char *file_buffer;
char buf[BUFFER_SIZE];
char *tmp_out_buffer;
char *file_buffer;
- size_t size;
+ size_t
buffer_size, new_
size;
int error;
const char *flags;
int error;
const char *flags;
@@
-2020,7
+2032,7
@@
jb_err template_fill(char **template_ptr, const struct map *exports)
assert(exports);
file_buffer = *template_ptr;
assert(exports);
file_buffer = *template_ptr;
- size = strlen(file_buffer) + 1;
+
buffer_
size = strlen(file_buffer) + 1;
/*
* Assemble pcrs joblist from exports map
/*
* Assemble pcrs joblist from exports map
@@
-2070,7
+2082,10
@@
jb_err template_fill(char **template_ptr, const struct map *exports)
}
else
{
}
else
{
- error = pcrs_execute(job, file_buffer, size, &tmp_out_buffer, &size);
+ error = pcrs_execute(job, file_buffer, buffer_size, &tmp_out_buffer,
+ &new_size);
+
+ buffer_size = new_size;
pcrs_free_job(job);
if (NULL == tmp_out_buffer)
pcrs_free_job(job);
if (NULL == tmp_out_buffer)