X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=cgiedit.c;h=0f041699242ebab2688c31b311aa1ea4ef616b2b;hp=89997fc218deb690d81544841b1bbccd0c560773;hb=1f0947493651af17ffa466f03e0eec2e04dba1af;hpb=ad29721b46a89b051958bf8272dfcd5626742d01 diff --git a/cgiedit.c b/cgiedit.c index 89997fc2..0f041699 100644 --- a/cgiedit.c +++ b/cgiedit.c @@ -1,4 +1,4 @@ -const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.59 2008/03/08 16:25:56 fabiankeil Exp $"; +const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.62 2008/08/31 15:59:02 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgiedit.c,v $ @@ -42,6 +42,18 @@ const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.59 2008/03/08 16:25:56 fabiankeil * * Revisions : * $Log: cgiedit.c,v $ + * Revision 1.62 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.61 2008/03/24 18:12:52 fabiankeil + * Use sizeof() more often. + * + * Revision 1.60 2008/03/15 14:52:35 fabiankeil + * Add CGI editor support for the "disable all filters of this type" + * directives "-client-header-filter", "-server-header-filter", + * "-client-header-tagger" and "-server-header-tagger". + * * Revision 1.59 2008/03/08 16:25:56 fabiankeil * After three file modification time mismatches, turn the CGI editor off. * @@ -689,7 +701,7 @@ static char *section_target(const unsigned sectionid) { char buf[30]; - snprintf(buf, 30, "#l%d", sectionid); + snprintf(buf, sizeof(buf), "#l%d", sectionid); return(strdup(buf)); } @@ -884,7 +896,7 @@ jb_err cgi_edit_actions_url_form(struct client_state *csp, if ( (cur_line == NULL) || (line_number != patternid) - || (patternid < 1) + || (patternid < 1U) || (cur_line->type != FILE_LINE_URL)) { /* Invalid "patternid" parameter */ @@ -1044,7 +1056,7 @@ jb_err cgi_edit_actions_remove_url_form(struct client_state *csp, if ( (cur_line == NULL) || (line_number != patternid) - || (patternid < 1) + || (patternid < 1U) || (cur_line->type != FILE_LINE_URL)) { /* Invalid "patternid" parameter */ @@ -1239,8 +1251,8 @@ jb_err edit_write_file(struct editable_file * file) /* Correct file->version_str */ freez(file->version_str); - snprintf(version_buf, 22, "%u", file->version); - version_buf[21] = '\0'; + snprintf(version_buf, sizeof(version_buf), "%u", file->version); + version_buf[sizeof(version_buf)-1] = '\0'; file->version_str = strdup(version_buf); if (version_buf == NULL) { @@ -1704,7 +1716,7 @@ jb_err edit_parse_actions_file(struct editable_file * file) text++; len--; } - while ( (len > 0) + while ( (len > (size_t)0) && ( (text[len - 1] == ' ') || (text[len - 1] == '\t') ) ) { @@ -1973,8 +1985,8 @@ jb_err edit_read_file(struct client_state *csp, /* Correct file->version_str */ freez(file->version_str); - snprintf(version_buf, 22, "%u", file->version); - version_buf[21] = '\0'; + snprintf(version_buf, sizeof(version_buf), "%u", file->version); + version_buf[sizeof(version_buf)-1] = '\0'; file->version_str = strdup(version_buf); if (version_buf == NULL) { @@ -2799,9 +2811,9 @@ jb_err cgi_edit_actions_list(struct client_state *csp, */ if (!err) err = map_conditional(exports, "all-urls-present", 1); - snprintf(buf, 150, "%d", line_number); + snprintf(buf, sizeof(buf), "%d", line_number); if (!err) err = map(exports, "all-urls-s", 1, buf, 1); - snprintf(buf, 150, "%d", line_number + 2); + snprintf(buf, sizeof(buf), "%d", line_number + 2); if (!err) err = map(exports, "all-urls-s-next", 1, buf, 1); if (!err) err = map(exports, "all-urls-actions", 1, actions_to_html(csp, cur_line->data.action), 0); @@ -2912,7 +2924,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return JB_ERR_MEMORY; } - snprintf(buf, 150, "%d", line_number); + snprintf(buf, sizeof(buf), "%d", line_number); err = map(section_exports, "s", 1, buf, 1); if (!err) err = map(section_exports, "actions", 1, actions_to_html(csp, cur_line->data.action), 0); @@ -2932,7 +2944,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp, if (prev_section_line_number != ((unsigned)(-1))) { /* Not last section */ - snprintf(buf, 150, "%d", prev_section_line_number); + snprintf(buf, sizeof(buf), "%d", prev_section_line_number); if (!err) err = map(section_exports, "s-prev", 1, buf, 1); if (!err) err = map_block_keep(section_exports, "s-prev-exists"); } @@ -2986,10 +2998,10 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return JB_ERR_MEMORY; } - snprintf(buf, 150, "%d", line_number); + snprintf(buf, sizeof(buf), "%d", line_number); err = map(url_exports, "p", 1, buf, 1); - snprintf(buf, 150, "%d", url_1_2); + snprintf(buf, sizeof(buf), "%d", url_1_2); if (!err) err = map(url_exports, "url-1-2", 1, buf, 1); if (!err) err = map(url_exports, "url-html", 1, @@ -3052,7 +3064,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp, /* Could also do section-specific exports here, but it wouldn't be as fast */ - snprintf(buf, 150, "%d", line_number); + snprintf(buf, sizeof(buf), "%d", line_number); if (!err) err = map(section_exports, "s-next", 1, buf, 1); if ( (cur_line != NULL) @@ -3480,7 +3492,7 @@ jb_err cgi_edit_actions_submit(struct client_state *csp, { if (!strncmp(b->url->spec, "standard.", 9) && !strcmp(b->url->spec + 9, action_set_name)) { - copy_action(cur_line->data.action, b->action); + copy_action(cur_line->data.action, b->action); goto found; } } @@ -4506,75 +4518,6 @@ jb_err cgi_edit_actions_section_swap(struct client_state *csp, return cgi_redirect(rsp, target); } -#ifdef FEATURE_TOGGLE -/********************************************************************* - * - * Function : cgi_toggle - * - * Description : CGI function that adds a new empty section to - * an actions file. - * - * Parameters : - * 1 : csp = Current client state (buffers, headers, etc...) - * 2 : rsp = http_response data structure for output - * 3 : parameters = map of cgi parameters - * - * CGI Parameters : - * set : If present, how to change toggle setting: - * "enable", "disable", "toggle", or none (default). - * mini : If present, use mini reply template. - * - * Returns : JB_ERR_OK on success - * JB_ERR_MEMORY on out-of-memory - * - *********************************************************************/ -jb_err cgi_toggle(struct client_state *csp, - struct http_response *rsp, - const struct map *parameters) -{ - struct map *exports; - char mode; - const char *template_name; - - assert(csp); - assert(rsp); - assert(parameters); - - if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_TOGGLE)) - { - return cgi_error_disabled(csp, rsp); - } - - mode = get_char_param(parameters, "set"); - - if (mode == 'E') - { - /* Enable */ - global_toggle_state = 1; - } - else if (mode == 'D') - { - /* Disable */ - global_toggle_state = 0; - } - else if (mode == 'T') - { - /* Toggle */ - global_toggle_state = !global_toggle_state; - } - - if (NULL == (exports = default_exports(csp, "toggle"))) - { - return JB_ERR_MEMORY; - } - - template_name = (get_char_param(parameters, "mini") - ? "toggle-mini" - : "toggle"); - - return template_fill_for_cgi(csp, template_name, exports, rsp); -} -#endif /* def FEATURE_TOGGLE */ /********************************************************************* * @@ -4889,9 +4832,78 @@ static jb_err actions_from_radio(const struct map * parameters, return err; } +#endif /* def FEATURE_CGI_EDIT_ACTIONS */ -#endif /* def FEATURE_CGI_EDIT_ACTIONS */ +#ifdef FEATURE_TOGGLE +/********************************************************************* + * + * Function : cgi_toggle + * + * Description : CGI function that adds a new empty section to + * an actions file. + * + * Parameters : + * 1 : csp = Current client state (buffers, headers, etc...) + * 2 : rsp = http_response data structure for output + * 3 : parameters = map of cgi parameters + * + * CGI Parameters : + * set : If present, how to change toggle setting: + * "enable", "disable", "toggle", or none (default). + * mini : If present, use mini reply template. + * + * Returns : JB_ERR_OK on success + * JB_ERR_MEMORY on out-of-memory + * + *********************************************************************/ +jb_err cgi_toggle(struct client_state *csp, + struct http_response *rsp, + const struct map *parameters) +{ + struct map *exports; + char mode; + const char *template_name; + + assert(csp); + assert(rsp); + assert(parameters); + + if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_TOGGLE)) + { + return cgi_error_disabled(csp, rsp); + } + + mode = get_char_param(parameters, "set"); + + if (mode == 'E') + { + /* Enable */ + global_toggle_state = 1; + } + else if (mode == 'D') + { + /* Disable */ + global_toggle_state = 0; + } + else if (mode == 'T') + { + /* Toggle */ + global_toggle_state = !global_toggle_state; + } + + if (NULL == (exports = default_exports(csp, "toggle"))) + { + return JB_ERR_MEMORY; + } + + template_name = (get_char_param(parameters, "mini") + ? "toggle-mini" + : "toggle"); + + return template_fill_for_cgi(csp, template_name, exports, rsp); +} +#endif /* def FEATURE_TOGGLE */ /*