View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000696 | Plugins | _Common | public | 2009-01-07 21:38 | 2009-03-12 18:55 |
Reporter | almar | Assigned To | alexy | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.0 | ||||
Fixed in Version | 1.75 | ||||
Summary | 0000696: Некоректная проверка на валидность 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) соединение с сервором проходит успешно. | ||||
Tags | No tags attached. | ||||
|
Пока под рукой нет x64 винды. Как поставлю проверю. |
|
Что то не как не получается x64 поднять. Давай попробуем наугад. Твоё изменение не правильное, проверь вот такое Было #define FISMSG(v) ((v) != NULL && ((int)(INT_PTR)(v)) > FAR_MAX_LANGID) Надо #define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID) |
|
В FISMSG баг есть, но он очень маловероятный, и ни как не должен приводить к падению по чтению из нулевого адреса. Как ты дошел то того что решил что баг в этом месте? И как повторить баг, у людей на x64 не повторяется? |
|
Не могу уже вспомнить почему я решил что должна быть такая замена... Ошибка возникает в функции 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/ или любой другой). При попытке зайти на сервер вылетает указанная ошибка. |
|
#define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID) Не исправляет ошибку. |
|
Ты уверен что пересобрал всё как надо? А то не может такого быть чтоб 0x000007fef457f9e0 > (void *)2000 дало false вот тут #define FISMSG(v) ((v) != NULL && (v) > (void *)FAR_MAX_LANGID) Удали все объектники и пересобери полностью. |
|
Короче в конце сделаем так, красивей выходит #define FISMSG(v) ((v) != NULL && (DWORD_PTR)(v) > FAR_MAX_LANGID) работать должно 100% (но и void * тоже рабочий). |
|
В общем закомитил, заодно исправил похожую ошибку во всех плагинах. |
|
Да, я был неправ насчёт (0002726). Действительно неправильно пересобрал. Оба последних варианта работают. Соответственно, новый релиз тоже. Спасибо. |
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 |