X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=cgisimple.c;h=f9ddbe2ecc2aefab1741b11bc9117eda9c4d4076;hb=95a30d7f7a289d0f5261927639808e490330616c;hp=df5645d576e6e39ea9aa5acc007184eb2e5c8321;hpb=9a1b371ee5061c9016b3ade486c4abfbad5bd475;p=privoxy.git diff --git a/cgisimple.c b/cgisimple.c index df5645d5..f9ddbe2e 100644 --- a/cgisimple.c +++ b/cgisimple.c @@ -1,4 +1,4 @@ -const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.41 2006/10/09 19:18:28 roro Exp $"; +const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.44 2006/12/22 14:19:27 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $ @@ -36,6 +36,28 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.41 2006/10/09 19:18:28 roro E * * Revisions : * $Log: cgisimple.c,v $ + * Revision 1.44 2006/12/22 14:19:27 fabiankeil + * Removed checks whether or not AF_FILES have + * data structures associated with them in cgi_show_status. + * It doesn't matter as we're only interested in the file names. + * + * For the action files the checks were always true, + * but they prevented empty filter files from being + * listed. Fixes parts of BR 1619208. + * + * Revision 1.43 2006/12/17 17:57:56 fabiankeil + * - Added FEATURE_GRACEFUL_TERMINATION to the + * "conditional #defines" section + * - Escaped ampersands in generated HTML. + * - Renamed re-filter-filename to re-filter-filenames + * + * Revision 1.42 2006/11/21 15:43:12 fabiankeil + * Add special treatment for WIN32 to make sure + * cgi_send_user_manual opens the files in binary mode. + * Fixes BR 1600411 and unbreaks image delivery. + * + * Remove outdated comment. + * * Revision 1.41 2006/10/09 19:18:28 roro * Redirect http://p.p/user-manual (without trailing slash) to * http://p.p/user-manual/ (with trailing slash), otherwise links will be broken. @@ -758,7 +780,7 @@ jb_err cgi_send_user_manual(struct client_state *csp, /* Get file length */ fseek(fp, 0, SEEK_END); - length = ftell(fp); + length = (size_t)ftell(fp); fseek(fp, 0, SEEK_SET); /* Allocate memory and load the file directly into the body */ @@ -769,19 +791,19 @@ jb_err cgi_send_user_manual(struct client_state *csp, free(full_path); return JB_ERR_MEMORY; } + memset(rsp->body, '\0', length+1); if (!fread(rsp->body, length, 1, fp)) { /* * This happens if we didn't fopen in binary mode. - * If it does, we just log it and serve what we got, - * most likely padded with garbage. + * If it does, we just log it and serve what we got. */ log_error(LOG_LEVEL_ERROR, "Couldn't completely read user-manual file %s.", full_path); } fclose(fp); free(full_path); - rsp->content_length = (int)length; + rsp->content_length = length; /* Guess correct Content-Type based on the filename's ending */ if (filename) @@ -856,7 +878,7 @@ jb_err cgi_show_version(struct client_state *csp, * * Function : cgi_show_status * - * Description : CGI function that returns a a web page describing the + * Description : CGI function that returns a web page describing the * current status of Privoxy. * * Parameters : @@ -893,8 +915,6 @@ jb_err cgi_show_status(struct client_state *csp, int local_urls_read; int local_urls_rejected; #endif /* ndef FEATURE_STATISTICS */ - struct file_list * fl; - struct url_actions * b; jb_err err = JB_ERR_OK; struct map *exports; @@ -1015,13 +1035,13 @@ jb_err cgi_show_status(struct client_state *csp, perc_rej = (float)local_urls_rejected * 100.0F / (float)local_urls_read; - sprintf(buf, "%d", local_urls_read); + snprintf(buf, sizeof(buf), "%d", local_urls_read); if (!err) err = map(exports, "requests-received", 1, buf, 1); - sprintf(buf, "%d", local_urls_rejected); + snprintf(buf, sizeof(buf), "%d", local_urls_rejected); if (!err) err = map(exports, "requests-blocked", 1, buf, 1); - sprintf(buf, "%6.2f", perc_rej); + snprintf(buf, sizeof(buf), "%6.2f", perc_rej); if (!err) err = map(exports, "percent-blocked", 1, buf, 1); } @@ -1038,11 +1058,11 @@ jb_err cgi_show_status(struct client_state *csp, s = strdup(""); for (i = 0; i < MAX_AF_FILES; i++) { - if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL)) + if (csp->actions_list[i] != NULL) { if (!err) err = string_append(&s, ""); if (!err) err = string_join(&s, html_encode(csp->actions_list[i]->filename)); - snprintf(buf, 100, "View", i); + snprintf(buf, 100, "View", i); if (!err) err = string_append(&s, buf); #ifdef FEATURE_CGI_EDIT_ACTIONS @@ -1072,22 +1092,23 @@ jb_err cgi_show_status(struct client_state *csp, s = strdup(""); for (i = 0; i < MAX_AF_FILES; i++) { - if (((fl = csp->rlist[i]) != NULL) && ((b = fl->f) != NULL)) + if (csp->rlist[i] != NULL) { if (!err) err = string_append(&s, ""); if (!err) err = string_join(&s, html_encode(csp->rlist[i]->filename)); - snprintf(buf, 100, "View", i); + snprintf(buf, 100, + "View", i); if (!err) err = string_append(&s, buf); if (!err) err = string_append(&s, "\n"); } } if (*s != '\0') { - if (!err) err = map(exports, "re-filter-filename", 1, s, 0); + if (!err) err = map(exports, "re-filter-filenames", 1, s, 0); } else { - if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1); + if (!err) err = map(exports, "re-filter-filenames", 1, "None specified", 1); if (!err) err = map_block_killer(exports, "have-filterfile"); } @@ -1318,7 +1339,7 @@ jb_err cgi_show_url_info(struct client_state *csp, /* FIXME: Hardcoded HTML! */ string_append(&matches, "In file: "); string_join (&matches, html_encode(csp->config->actions_file_short[i])); - snprintf(buf, 150, ".action ", i); + snprintf(buf, 150, ".action ", i); string_append(&matches, buf); string_append(&matches, "View"); #ifdef FEATURE_CGI_EDIT_ACTIONS @@ -1491,6 +1512,12 @@ static jb_err show_defines(struct map *exports) if (!err) err = map(exports, "FORCE_PREFIX", 1, "(none - disabled)", 1); #endif /* ndef FEATURE_FORCE_LOAD */ +#ifdef FEATURE_GRACEFUL_TERMINATION + if (!err) err = map_conditional(exports, "FEATURE_GRACEFUL_TERMINATION", 1); +#else /* ifndef FEATURE_GRACEFUL_TERMINATION */ + if (!err) err = map_conditional(exports, "FEATURE_GRACEFUL_TERMINATION", 0); +#endif /* ndef FEATURE_GRACEFUL_TERMINATION */ + #ifdef FEATURE_IMAGE_BLOCKING if (!err) err = map_conditional(exports, "FEATURE_IMAGE_BLOCKING", 1); #else /* ifndef FEATURE_IMAGE_BLOCKING */ @@ -1579,7 +1606,7 @@ static char *show_rcs(void) #define SHOW_RCS(__x) \ { \ extern const char __x[]; \ - sprintf(buf, "%s\n", __x); \ + snprintf(buf, sizeof(buf), " %s\n", __x); \ string_append(&result, buf); \ }