/ домой \ | \ темы / |
23/08/2024 10:54 AdminZ: |
char* CheckBadName(char *in_buf) { ... pp=in_buf; while((pp=strstr(pp,".."))) { if(! (s_flgs[1]&FL1_2P) )return 0; if( pp[-1]<0x20 || strchr(bbch,pp[-1]) || pp[2]<0x20 || strchr(bbch,pp[2]))return 0; ++pp; } if(strstr(in_buf,".\\") )return 0; <= Если имя файла заканчивается на точку, то он BAD. Предлагаю добавить опцию игнорировать как и с .. FL1_2P for(char **bdlst=bad_list;*bdlst;++bdlst ) if((t=stristr(in_buf,*bdlst ))) if((!(ii=t[strlen(*bdlst)])) || (ii==FSLUSH) || (ii=='.') || (ii<='&') || (ii>'}') ) return 0; if(strpbrk(in_buf,"<>\"\n\r*?")) return 0; return p; } |
25/08/2024 09:41 Max: |
Это не заканчивается на точку, это точка перед слешем. Такая последовательность может интерпретироваться Windows как ссылка на устройство или обращение к драйверу, например "\.\DRIVEC" В нормальных именах такого быть не должно. |
25/08/2024 22:16 AdminZ: |
\.\ таких нет, но папки-предложения заканчивающиеся на точку есть и это нормальные имена на NTFS.
|