From: Frédéric Marchal Date: Thu, 9 Feb 2012 20:10:54 +0000 (+0100) Subject: Avoid a possible name clash in the temporary directory X-Git-Tag: v2.3.3-pre1~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c98d6a0f7eaea794cad9fe069d918d225c35d331;p=thirdparty%2Fsarg.git Avoid a possible name clash in the temporary directory As all the temporary files are generated in the same directory and some of them may be named after the user's ID found in the log file, it is possible that a user's file ends up with the same name as an internal file such as the downloads. To avoid that name clash, the temporary files created for any auxiliary report are suffixed with a distinct extension. --- diff --git a/authfail.c b/authfail.c index 7c57c34..b390202 100644 --- a/authfail.c +++ b/authfail.c @@ -68,7 +68,7 @@ void authfail_report(void) ouser2[0]='\0'; oip[0]='\0'; - snprintf(tmp4,sizeof(tmp4),"%s/authfail.log.unsort",tmp); + snprintf(tmp4,sizeof(tmp4),"%s/authfail.int_unsort",tmp); if(authfail_count == 0) { unlink(tmp4); @@ -76,7 +76,7 @@ void authfail_report(void) return; } - snprintf(authfail_in,sizeof(authfail_in),"%s/authfail.log",tmp); + snprintf(authfail_in,sizeof(authfail_in),"%s/authfail.int_log",tmp); snprintf(report,sizeof(report),"%s/authfail.html",outdirname); snprintf(csort,sizeof(csort),"sort -b -t \"\t\" -T \"%s\" -k 3,3 -k 5,5 -o \"%s\" \"%s\"", tmp, authfail_in, tmp4); diff --git a/dansguardian_log.c b/dansguardian_log.c index 70d157e..be13b86 100644 --- a/dansguardian_log.c +++ b/dansguardian_log.c @@ -49,8 +49,8 @@ void dansguardian_log(void) dfrom=(period.start.tm_year+1900)*10000+(period.start.tm_mon+1)*100+period.start.tm_mday; duntil=(period.end.tm_year+1900)*10000+(period.end.tm_mon+1)*100+period.end.tm_mday; - snprintf(guard_in,sizeof(guard_in),"%s/dansguardian.unsort",tmp); - snprintf(guard_ou,sizeof(guard_ou),"%s/dansguardian.log",tmp); + snprintf(guard_in,sizeof(guard_in),"%s/dansguardian.int_unsort",tmp); + snprintf(guard_ou,sizeof(guard_ou),"%s/dansguardian.int_log",tmp); if(access(DansGuardianConf, R_OK) != 0) { debuga(_("Cannot open DansGuardian config file: %s\n"),DansGuardianConf); diff --git a/dansguardian_report.c b/dansguardian_report.c index 0a38b58..f326226 100644 --- a/dansguardian_report.c +++ b/dansguardian_report.c @@ -58,7 +58,7 @@ void dansguardian_report(void) ouser[0]='\0'; - snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.log",tmp); + snprintf(dansguardian_in,sizeof(dansguardian_in),"%s/dansguardian.int_log",tmp); if(!dansguardian_count) { unlink(dansguardian_in); if (debugz) debugaz(_("Dansguardian report not generated because it is empty\n")); diff --git a/denied.c b/denied.c index 2ca1627..8b76517 100644 --- a/denied.c +++ b/denied.c @@ -62,7 +62,7 @@ void gen_denied_report(void) ouser[0]='\0'; ouser2[0]='\0'; - sprintf(denied_in,"%s/denied.log",tmp); + sprintf(denied_in,"%s/denied.int_log",tmp); if (!denied_count) { unlink(denied_in); if (debugz) debugaz(_("Denied report not produced because it is empty\n")); diff --git a/download.c b/download.c index 083b958..b1fd04c 100644 --- a/download.c +++ b/download.c @@ -59,10 +59,10 @@ static void download_sort(const char *report_in) char csort[MAXLEN]; int cstatus; - clen=snprintf(csort,sizeof(csort),"sort -T \"%s\" -t \"\t\" -k 3,3 -k 1,1 -k 2,2 -k 5,5 -o \"%s\" \"%s/download.unsort\"", + clen=snprintf(csort,sizeof(csort),"sort -T \"%s\" -t \"\t\" -k 3,3 -k 1,1 -k 2,2 -k 5,5 -o \"%s\" \"%s/download.int_unsort\"", tmp, report_in, tmp); if (clen>=sizeof(csort)) { - debuga(_("Path too long to sort the file: %s\n"),csort); + debuga(_("Path too long to sort the file: %s/download.int_unsort\n"),tmp); exit(EXIT_FAILURE); } cstatus=system(csort); @@ -71,8 +71,8 @@ static void download_sort(const char *report_in) debuga(_("sort command: %s\n"),csort); exit(EXIT_FAILURE); } - if (snprintf(csort,sizeof(csort),"%s/download.unsort",tmp)>=sizeof(csort)) { - debuga(_("Path too long for %s/download.unsort\n"),tmp); + if (snprintf(csort,sizeof(csort),"%s/download.int_unsort",tmp)>=sizeof(csort)) { + debuga(_("Path too long for %s/download.int_unsort\n"),tmp); exit(EXIT_FAILURE); } if (unlink(csort)) { @@ -114,7 +114,7 @@ void download_report(void) ouser2[0]='\0'; // sort the raw file - snprintf(report_in,sizeof(report_in),"%s/download.log",tmp); + snprintf(report_in,sizeof(report_in),"%s/download.int_log",tmp); download_sort(report_in); if(access(report_in, R_OK) != 0) { if (debugz) debugaz(_("Downloaded files report not generated as it is empty\n")); diff --git a/html.c b/html.c index c0e346b..c6ef899 100644 --- a/html.c +++ b/html.c @@ -60,13 +60,13 @@ void htmlrel(void) const struct userinfostruct *uinfo; userscan uscan; - if (snprintf(tmp2,sizeof(tmp2),"%s/sargtmp.unsort",tmp)>=sizeof(tmp2)) { - debuga(_("File name too long: %s/sargtmp.unsort\n"),tmp); + if (snprintf(tmp2,sizeof(tmp2),"%s/sargtmp.int_unsort",tmp)>=sizeof(tmp2)) { + debuga(_("File name too long: %s/sargtmp.int_unsort\n"),tmp); exit(EXIT_FAILURE); } - if (snprintf(tmp3,sizeof(tmp3),"%s/sargtmp.log",tmp)>=sizeof(tmp3)) { - debuga(_("File name too long: %s/sargtmp.log\n"),tmp); + if (snprintf(tmp3,sizeof(tmp3),"%s/sargtmp.int_log",tmp)>=sizeof(tmp3)) { + debuga(_("File name too long: %s/sargtmp.int_log\n"),tmp); exit(EXIT_FAILURE); } diff --git a/log.c b/log.c index 10e3b60..ed200b3 100644 --- a/log.c +++ b/log.c @@ -649,9 +649,9 @@ int main(int argc,char *argv[]) unlinkdir(tmp,1); } my_mkdir(tmp); - snprintf(denied_unsort,sizeof(denied_unsort),"%s/denied.log.unsort",tmp); - snprintf(denied_sort,sizeof(denied_sort),"%s/denied.log",tmp); - snprintf(authfail_unsort,sizeof(authfail_unsort),"%s/authfail.log.unsort",tmp); + snprintf(denied_unsort,sizeof(denied_unsort),"%s/denied.int_unsort",tmp); + snprintf(denied_sort,sizeof(denied_sort),"%s/denied.int_log",tmp); + snprintf(authfail_unsort,sizeof(authfail_unsort),"%s/authfail.int_unsort",tmp); if(debug) { debuga(_("Parameters:\n")); @@ -766,7 +766,7 @@ int main(int argc,char *argv[]) exit(EXIT_FAILURE); } - snprintf(sz_Download_Unsort,sizeof(sz_Download_Unsort),"%s/download.unsort", tmp); + snprintf(sz_Download_Unsort,sizeof(sz_Download_Unsort),"%s/download.int_unsort", tmp); if(DataFile[0]=='\0') { if((ReportType & REPORT_TYPE_DENIED) != 0) { diff --git a/redirector.c b/redirector.c index e1fdf2f..81a0de7 100644 --- a/redirector.c +++ b/redirector.c @@ -304,8 +304,8 @@ void redirector_log(void) return; } - sprintf(guard_in,"%s/redirector.unsort",tmp); - sprintf(guard_ou,"%s/redirector.log",tmp); + snprintf(guard_in,sizeof(guard_in),"%s/redirector.int_unsort",tmp); + snprintf(guard_ou,sizeof(guard_ou),"%s/redirector.int_log",tmp); if((fp_ou=fopen(guard_in,"a"))==NULL) { debuga(_("(squidguard) Cannot open log file %s\n"),guard_in); exit(EXIT_FAILURE); @@ -443,7 +443,7 @@ void redirector_report(void) ouser[0]='\0'; ouser2[0]='\0'; - sprintf(squidguard_in,"%s/redirector.log",tmp); + snprintf(squidguard_in,sizeof(squidguard_in),"%s/redirector.int_log",tmp); if(!redirector_count) { unlink(squidguard_in); if (debugz) debugaz(_("Redirector report not generated because it is empty\n")); diff --git a/report.c b/report.c index 88af2d3..4ede8ab 100644 --- a/report.c +++ b/report.c @@ -743,7 +743,7 @@ static void grava_SmartFilter(const char *dirname, const char *user, const char FILE *fp_ou; char wdirname[MAXLEN]; - sprintf(wdirname,"%s/smartfilter.unsort",dirname); + sprintf(wdirname,"%s/smartfilter.int_unsort",dirname); if((fp_ou=MY_FOPEN(wdirname,"a"))==NULL){ debuga(_("(report) Cannot open file %s\n"),wdirname); diff --git a/smartfilter.c b/smartfilter.c index 81b97e0..ad73eb5 100644 --- a/smartfilter.c +++ b/smartfilter.c @@ -53,8 +53,8 @@ void smartfilter_report(void) ouser[0]='\0'; - if (snprintf(smart_in,sizeof(smart_in),"%s/smartfilter.unsort",outdirname)>=sizeof(smart_in)) { - debuga(_("File name too long: %s/smartfilter.unsort\n"),outdirname); + if (snprintf(smart_in,sizeof(smart_in),"%s/smartfilter.int_unsort",outdirname)>=sizeof(smart_in)) { + debuga(_("File name too long: %s/smartfilter.int_unsort\n"),outdirname); exit(EXIT_FAILURE); } if (snprintf(sites,sizeof(sites),"%s/sarg-sites",outdirname)>=sizeof(sites)) { diff --git a/useragent.c b/useragent.c index 8bd55b7..fa000b5 100644 --- a/useragent.c +++ b/useragent.c @@ -58,8 +58,8 @@ void useragent(void) ipbefore[0]='\0'; namebefore[0]='\0'; - sprintf(tmp3,"%s/squagent.unsort",tmp); - sprintf(tmp2,"%s/squagent.log",tmp); + sprintf(tmp3,"%s/squagent.int_unsort",tmp); + sprintf(tmp2,"%s/squagent.int_log",tmp); if((fp_in=fopen(UserAgentLog,"r"))==NULL) { debuga(_("(useragent) Cannot open file %s\n"),UserAgentLog);