Форум

/ домой \ \ темы /



Тема: req.cpp

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.

Пользователь: Пароль: Новый пользователь:   Запомнить пароль: