char oldaccdia[11], oldacchora[9], oldaccip[MAXLEN], wdir[MAXLEN], per1[MAXLEN];
char wdirname[MAXLEN], oldurl[MAXLEN], oldaccuser[MAXLEN];
char olduser[MAXLEN], oldmsg[50], acccode[50], oldaccelap[10], oldacccode[50], user[MAXLEN];
- char ipantes[MAXLEN], nameantes[MAXLEN], wdname[MAXLEN], wname2[MAXLEN];
+ char ipantes[MAXLEN], nameantes[MAXLEN];
char accsmart[MAXLEN];
char wcrc[50];
char crc2[50];
char *s;
DIR *dirp;
struct dirent *direntp;
+ const char logext[]=".log";
+ int dlen;
ipantes[0]='\0';
nameantes[0]='\0';
dirp = opendir(tmp);
while ((direntp = readdir( dirp )) != NULL ) {
- if((strstr(direntp->d_name,".log") == 0) ||
+ dlen=strlen(direntp->d_name)-(sizeof(logext)-1);
+ if (dlen<0) continue;
+ if((strcmp(direntp->d_name+dlen,logext) != 0) ||
(strncmp(direntp->d_name,"download.log",12) == 0) ||
(strncmp(direntp->d_name,"denied.log",10) == 0) ||
- (strncmp(direntp->d_name,"authfail.log.unsort",19) == 0))
+ (strncmp(direntp->d_name,"authfail.log.unsort",19) == 0))
continue;
- sprintf(tmp3,"%s/%s",tmp,direntp->d_name);
- if((fp_in=fopen(tmp3,"r"))==NULL){
- fprintf(stderr, "SARG: (report) %s: %s\n",text[45],tmp);
+ if (snprintf(tmp3,sizeof(tmp3),"%s/%s",tmp,direntp->d_name)>=sizeof(tmp3)) {
+ fprintf(stderr, "SARG: (report) directory entry too long: %s/%s\n",tmp,direntp->d_name);
exit(1);
}
-
- strcpy(wdname,direntp->d_name);
- strip_prefix:
- if (getword(wname2,sizeof(wname2),wdname,'.')<0) {
- printf("SARG: Maybe you have a broken record or garbage in your %s directory.\n",tmp);
+ if((fp_in=fopen(tmp3,"r"))==NULL){
+ fprintf(stderr, "SARG: (report) %s: %s\n",text[45],tmp);
exit(1);
}
- strcat(user,wname2);
-
- if(strcmp(wdname,"log") !=0) {
- strcat(user,".");
- goto strip_prefix;
+
+ if (dlen>0) {
+ if (dlen>=sizeof(user)) continue;
+ strncpy(user,direntp->d_name,dlen);
+ user[dlen]=0;
+ } else {
+ user[0]='\0';
}
strcpy(wdirname,dirname);