View Issue Details

IDProjectCategoryView StatusLast Update
0000696Plugins_Commonpublic2009-03-12 18:55
Reporteralmar Assigned Toalexy  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product Version2.0 
Fixed in Version1.75 
Summary0000696: Некоректная проверка на валидность MsgID в x64.
DescriptionВ 64-битной версии при попытке соединения с ftp сервером выдаётся такая ошибка.
Additional InformationЕсли в файле "funi.h" проекта "Ftp_all->FARStdlib" сделать замену:

//#define FISMSG(v) ((v) != NULL && ((int)(INT_PTR)(v)) > FAR_MAX_LANGID)
#define FISMSG(v) ((v) != NULL && FGETID(v) > FAR_MAX_LANGID)

соединение с сервором проходит успешно.
TagsNo tags attached.

Activities

alexy

2009-01-11 20:05

administrator   bugnote:0002304

Пока под рукой нет x64 винды. Как поставлю проверю.

alexy

2009-03-03 09:40

administrator   bugnote:0002680

Что то не как не получается x64 поднять. Давай попробуем наугад.
Твоё изменение не правильное, проверь вот такое

Было
#define FISMSG(v) ((v) != NULL && ((int)(INT_PTR)(v)) > FAR_MAX_LANGID)

Надо
#define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID)

alexy

2009-03-05 18:53

administrator   bugnote:0002718

В FISMSG баг есть, но он очень маловероятный, и ни как не должен приводить к падению по чтению из нулевого адреса.
Как ты дошел то того что решил что баг в этом месте? И как повторить баг, у людей на x64 не повторяется?

almar

2009-03-07 14:57

reporter   bugnote:0002725

Last edited: 2009-03-07 15:08

Не могу уже вспомнить почему я решил что должна быть такая замена...

Ошибка возникает в функции fstd_FMsg.cpp->FP_Message (может быть и раньше, я просто недостаточно хорошо разбираюсь в проекте).

Items[0] 0x0000000002b66eb0 "FTP ":mirror.yandex.ru""
Items[1] 0x0000000002c5fad0 "<- 220 Welcome to Yandex FTP service (dispenser.yandex.net). "

Items[2] 0x000007fef457f9e0 " " (последовательность байт 0x01, 0x00)

Items[3] 0x0000000002b66f20 "17:46:00 "Waiting for response""
Items[4] 0x0000000002b66f90 "mirror.yandex.ru"

В блоке //Array of lines - check if lines are message id
для Items[2] выражение (int)(INT_PTR)(v) возвращает отрицательное число, поэтому
FISMSG(v) возвращает false.
Далее FP_GetMsg( FGETID(Items[rc]) ) возвращает 0

В конце концов, при отображении сообщения всплывает ошибка.
===
Моя операционная система Vista 64 Enterprise Ed.
Я перехожу на панель ftp (select disk -> 2) добавляю какой-нибудь ftp (например ftp://mirror.yandex.ru/ubuntu-releases/ или любой другой). При попытке зайти на сервер вылетает указанная ошибка.

almar

2009-03-07 15:00

reporter   bugnote:0002726

#define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID)
Не исправляет ошибку.

alexy

2009-03-07 16:01

administrator   bugnote:0002727

Ты уверен что пересобрал всё как надо? А то не может такого быть чтоб
0x000007fef457f9e0 > (void *)2000
дало false
вот тут
#define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID)

Удали все объектники и пересобери полностью.

alexy

2009-03-07 16:13

administrator   bugnote:0002728

Короче в конце сделаем так, красивей выходит
#define FISMSG(v) ((v) != NULL && (DWORD_PTR)(v) > FAR_MAX_LANGID)

работать должно 100% (но и void * тоже рабочий).

alexy

2009-03-07 16:47

administrator   bugnote:0002729

В общем закомитил, заодно исправил похожую ошибку во всех плагинах.

almar

2009-03-10 21:20

reporter   bugnote:0002736

Да, я был неправ насчёт (0002726). Действительно неправильно пересобрал.
Оба последних варианта работают. Соответственно, новый релиз тоже.
Спасибо.

Issue History

Date Modified Username Field Change
2009-01-07 21:38 almar New Issue
2009-01-11 20:05 alexy Status new => assigned
2009-01-11 20:05 alexy Assigned To => alexy
2009-01-11 20:05 alexy Note Added: 0002304
2009-03-03 09:40 alexy Note Added: 0002680
2009-03-05 18:53 alexy Note Added: 0002718
2009-03-07 14:57 almar Note Added: 0002725
2009-03-07 15:00 almar Note Added: 0002726
2009-03-07 15:08 almar Note Edited: 0002725
2009-03-07 16:01 alexy Note Added: 0002727
2009-03-07 16:13 alexy Note Added: 0002728
2009-03-07 16:47 alexy Category FTP => _Common
2009-03-07 16:47 alexy Summary Access violation (read from 0x0000000000000000) => Некоректная проверка на валидность MsgID в x64.
2009-03-07 16:47 alexy Note Added: 0002729
2009-03-07 16:47 alexy Status assigned => feedback
2009-03-10 21:20 almar Note Added: 0002736
2009-03-10 21:28 almar Status feedback => resolved
2009-03-10 21:28 almar Resolution open => fixed
2009-03-12 18:55 alexy Status resolved => closed
2009-03-12 18:55 alexy Fixed in Version => 1.75