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, "