[samba] Ошибка чтения пустого каталога
Alexander Bokovoy
a.bokovoy на sam-solutions.net
Чт Апр 1 12:23:24 MSD 2004
On Thu, Apr 01, 2004 at 01:14:29PM +1000, Oleg Gints wrote:
> >>Под XP такой ошибки нет, но там запросы другие.
> >>
> >>Интересно, эта ошибка еще у кого-нибудь наблюдается?
> >
> >Не видел. Интересно, не связано ли это с тем же источником, который
> >создает проблему и при использовании smbfs в 2.4? Там тоже ошибка в
> >обработке TRANS2, правда в коде smbfs.
>
> Разобрался в чем дело, только как корректно исправить ситуацию - не знаю.
> Дело связано с изменениями в trans2.c:
>
> функция call_trans2findnext
>
> if (total_params < 12)
> return(ERROR_DOS(ERRDOS,ERRinvalidparam));
>
> *mask = *directory = *resume_name = 0;
>
> - srvstr_pull(inbuf, resume_name, params+12, sizeof(resume_name),
> -1, STR_TERMINATE);
> + srvstr_get_path(inbuf, resume_name, params+12,
> sizeof(resume_name), -1, STR_TERMINATE, &ntstatus);
> + if (!NT_STATUS_IS_OK(ntstatus)) {
> + return ERROR_NT(ntstatus);
> + }
>
> DEBUG(3,("call_trans2findnext: dirhandle = %d, max_data_bytes =
> %d, maxentries = %d, \
>
> Ощибка происходит при вызове srvstr_get_path (файл reply.c)
> в которой далее вызывается функция check_path_syntax(dest, tmppath)
> В качестве параметра передается строка 0x2E 0x2E \0, т.е. то,
> что было запрошено со сторны клиента Win ME - FIND_NEXT2("..")
>
> if ((s[0] == '.') && (s[1] == '.') && (IS_DIRECTORY_SEP(s[2]) || s[2] ==
> '\0'))
> успешно эту стороку отлавливает, и далее срабатывает это условие
> if (d == destname) {
>
> return NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
>
> }
> и клиент получает ошибку 161 - неверное имя каталога.
Технически правильный ответ.
> Осталось выяснить, исправлена ли эта ситуация в последней версии
> самбы.
Это и есть последняя версия Самбы.
--
/ Alexander Bokovoy
Samba Team http://www.samba.org/
ALT Linux Team http://www.altlinux.org/
Midgard Project Ry http://www.midgard-project.org/
Подробная информация о списке рассылки Samba