Skip to content
Snippets Groups Projects
Commit ff7f0bb2 authored by rswindell's avatar rswindell
Browse files

Bugfix: upload() would allow upload of duplicate file to "invisible" dirs (e.g.

sysop or uploads dir) if the file was in the dir's database, but not on disk.
Cosmetic change: display unpadded filename in error strings.
parent 28f3168f
No related branches found
No related tags found
No related merge requests found
...@@ -344,19 +344,24 @@ bool sbbs_t::upload(uint dirnum) ...@@ -344,19 +344,24 @@ bool sbbs_t::upload(uint dirnum)
if(!dir_op(dirnum)) return(false); if(!dir_op(dirnum)) return(false);
} }
bputs(text[SearchingForDupes]); bputs(text[SearchingForDupes]);
if(findfile(&cfg,dirnum,f.name)) {
bputs(text[SearchedForDupes]);
bprintf(text[FileAlreadyOnline],fname);
return(false); /* File is already in database */
}
for(i=k=0;i<usrlibs;i++) { for(i=k=0;i<usrlibs;i++) {
for(j=0;j<usrdirs[i];j++,k++) { for(j=0;j<usrdirs[i];j++,k++) {
outchar('.'); outchar('.');
if(k && !(k%5)) if(k && !(k%5))
bputs("\b\b\b\b\b \b\b\b\b\b"); bputs("\b\b\b\b\b \b\b\b\b\b");
if((usrdir[i][j]==dirnum || cfg.dir[usrdir[i][j]]->misc&DIR_DUPES) if(usrdir[i][j]==dirnum)
continue; /* we already checked this dir */
if(cfg.dir[usrdir[i][j]]->misc&DIR_DUPES
&& findfile(&cfg,usrdir[i][j],f.name)) { && findfile(&cfg,usrdir[i][j],f.name)) {
bputs(text[SearchedForDupes]); bputs(text[SearchedForDupes]);
bprintf(text[FileAlreadyOnline],f.name); bprintf(text[FileAlreadyOnline],fname);
if(!dir_op(dirnum)) if(!dir_op(dirnum))
return(false); /* File is in database for another dir */ return(false); /* File is in database for another dir */
if(usrdir[i][j]==dirnum)
return(false); /* don't allow duplicates */
} }
} }
} }
...@@ -475,7 +480,7 @@ bool sbbs_t::upload(uint dirnum) ...@@ -475,7 +480,7 @@ bool sbbs_t::upload(uint dirnum)
else { else {
for(i=0;i<batup_total;i++) for(i=0;i<batup_total;i++)
if(!strcmp(batup_name[i],f.name)) { if(!strcmp(batup_name[i],f.name)) {
bprintf(text[FileAlreadyInQueue],f.name); bprintf(text[FileAlreadyInQueue],fname);
return(false); return(false);
} }
strcpy(batup_name[batup_total],f.name); strcpy(batup_name[batup_total],f.name);
...@@ -485,7 +490,7 @@ bool sbbs_t::upload(uint dirnum) ...@@ -485,7 +490,7 @@ bool sbbs_t::upload(uint dirnum)
batup_alt[batup_total]=altul; batup_alt[batup_total]=altul;
batup_total++; batup_total++;
bprintf(text[FileAddedToUlQueue] bprintf(text[FileAddedToUlQueue]
,f.name,batup_total,cfg.max_batup); ,fname,batup_total,cfg.max_batup);
} }
} else { } else {
for(i=0;i<cfg.total_prots;i++) for(i=0;i<cfg.total_prots;i++)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment