]> git.ipfire.org Git - thirdparty/sarg.git/commitdiff
Avoid a possible name clash in the temporary directory
authorFrédéric Marchal <fmarchal@users.sourceforge.net>
Thu, 9 Feb 2012 20:10:54 +0000 (21:10 +0100)
committerFrédéric Marchal <fmarchal@users.sourceforge.net>
Thu, 9 Feb 2012 20:10:54 +0000 (21:10 +0100)
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.

authfail.c
dansguardian_log.c
dansguardian_report.c
denied.c
download.c
html.c
log.c
redirector.c
report.c
smartfilter.c
useragent.c

index 7c57c34970d31dbcd634a12c15a9b6f406929577..b390202af565304764937e367754982b3bfa6eea 100644 (file)
@@ -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);
index 70d157eab99d0a9d6463d2f1a54736c9f54f12fb..be13b867effa49af52732b3d893cf7e31cf3c14e 100644 (file)
@@ -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);
index 0a38b58f080f8a8c83587572784f72a91b91e7ac..f326226d2f79430dc8bf618b3c88cb2b1d1684c6 100644 (file)
@@ -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"));
index 2ca16279210f7b6d284db53c69c9572fcb2191cb..8b76517918cd87c1d623ae50b593cc16548ccdb8 100644 (file)
--- 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"));
index 083b958d8a343e60e09fb46b5b303cfd9be8899b..b1fd04c13748a2cf019c3d059544857bdebafb45 100644 (file)
@@ -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 c0e346b2820976fc030921bdf06976f08346360b..c6ef89993942803b1946aec552abb922349679c5 100644 (file)
--- 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 10e3b60efde0ce6a0bacf5014dfb006dfc620315..ed200b3cb8531e5c1cbb78252714d693a6bc9ea3 100644 (file)
--- 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) {
index e1fdf2fe9ed17ea693ccf6d4633bb54c37ae6b67..81a0de758e568d90b166f1e1e950bf1b4d345093 100644 (file)
@@ -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"));
index 88af2d385075704f68b42489213fd968ac7675ff..4ede8abc6b4182033f199b6564a5c165d822995d 100644 (file)
--- 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);
index 81b97e05a9ad2482724a960d471f5bd867db6278..ad73eb548cef8470dfeb4a800cd0570d196058ef 100644 (file)
@@ -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)) {
index 8bd55b76239ec6f891239f64409872a6d37ce30a..fa000b5ffaaa28690600d3bc9b5c55670e7e96f7 100644 (file)
@@ -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);