Board.KolibriOS.org
http://board.kolibrios.org/

OpenDialog
http://board.kolibrios.org/viewtopic.php?f=2&t=3499
Страница 2 из 2

Автор:  0CodErr [ Пт окт 06, 2017 3:54 pm ]
Заголовок сообщения:  Re: OpenDialog

Siemargl писал(а):
Проблема глубже - в отсутствии валидации параметров в библиотеке.
И как ты себе эту "валидацию" представляешь?
IgorA писал(а):
Если фильтр больше чем 4кб то программа и OpenDialog теперь падать не должны. OpenDialog такой фильтр проигнорирует и запустится без фильтра.
А если я вот хочу такой большой фильтр? Не важно, зачем. Вот хочу и всё!
На мой взгляд такая проверка лишняя. Правильным является следование документации.
Дело хозяйское, конечно.
Но не думаю, что кто-то в серьёзных проектах делал бы подобные "фиксы" только из-за того, что кто-то там не правильно передал параметры.

Автор:  IgorA [ Пт окт 06, 2017 5:28 pm ]
Заголовок сообщения:  Re: OpenDialog

0CodErr писал(а):
А если я вот хочу такой большой фильтр? Не важно, зачем. Вот хочу и всё!
На мой взгляд такая проверка лишняя. Правильным является следование документации.

большой фильтр никак не получится, потому что в строке 199 файла opendial.mac выделяется память под фильтр (и еще какие-то внутренние библиотечные дела) фиксированного размера:
Код:
   mcall   SF_SYS_MISC,SSF_MEM_OPEN,od_com_area_name,8192,0x09

Из этих 8 кб судя по коду около 4кб используется под фильтр. Потому даже если пользователь следуя документации выделит памяти больше 4кб диалог может зависнуть, что и было устранено в ревизии
0CodErr писал(а):
Дело хозяйское, конечно.
Но не думаю, что кто-то в серьёзных проектах делал бы подобные "фиксы" только из-за того, что кто-то там не правильно передал параметры.

Мне кажется что в серьёзных проектах системная библиотека не должна виснуть из-за того что кто-то не правильно задал параметры, потому что это бросает тень на стабильность работы всей системы. А если библиотека еще при этом и сообщит как-нибудь что параметры неправильные то это будет вообще идеальный случай. Вдруг какой-нибудь зловредный хакер захочет написать вирус для слома системы, в таком случае системная библиотека которая будет копировать байты непонятно куда при неправильно переданных параметрах для него будет находкой. Я думаю что это дыра в безопасности которую нужно закрыть.

Автор:  Siemargl [ Пт окт 06, 2017 5:33 pm ]
Заголовок сообщения:  Re: OpenDialog

0CodErr писал(а):
Siemargl писал(а):
Проблема глубже - в отсутствии валидации параметров в библиотеке.
И как ты себе эту "валидацию" представляешь?

Design by contract
https://ru.wikipedia.org/wiki/Контрактн ... ммирование

Автор:  0CodErr [ Пт окт 06, 2017 6:37 pm ]
Заголовок сообщения:  Re: OpenDialog

Siemargl писал(а):
Design by contract
А какое отношение это имеет конкретно к нашему случаю?
А так всё правильно, конечно.
Каждому инструменту должно быть своё место.
Цитата:
Языки, изначально поддерживающие средства для контрактного программирования:
...
Component Pascal, Modula-2, Modula-3, Oberon-2, Oberon-07/11, Zonnon, Active Oberon, Ada 2012

IgorA писал(а):
Потому даже если пользователь следуя документации выделит памяти больше 4кб диалог может зависнуть, что и было устранено в ревизии
А, ну это, оказывается, ограничение самого диалога.
IgorA писал(а):
Мне кажется что в серьёзных проектах системная библиотека не должна виснуть из-за того что кто-то не правильно задал параметры, потому что это бросает тень на стабильность работы всей системы.
Существуют, например, системные функции, принимающие размер буфера. Ну давай, сделай валидацию :lol:
IgorA писал(а):
Вдруг какой-нибудь зловредный хакер захочет написать вирус для слома системы, в таком случае системная библиотека которая будет копировать байты непонятно куда при неправильно переданных параметрах для него будет находкой. Я думаю что это дыра в безопасности которую нужно закрыть.
Если хакер захочет, он это сделает.
Не "непонятно куда", а ровно туда, куда указано в параметрах.
Возможно, в твоём понимании неправильные параметры — это только размер, а в реальности — это вообще любой параметр.
Я могу указатель передать 0xFFFFFFFF. Будешь делать валидацию?

Автор:  Siemargl [ Пт окт 06, 2017 8:34 pm ]
Заголовок сообщения:  Re: OpenDialog

0CodErr писал(а):
Siemargl писал(а):
Design by contract
А какое отношение это имеет конкретно к нашему случаю?
А так всё правильно, конечно.
Каждому инструменту должно быть своё место.

Тебе надо напрячься и подумать.

Автор:  Kopa [ Пт окт 06, 2017 9:43 pm ]
Заголовок сообщения:  Re: OpenDialog

0CodErr писал(а):
Я могу указатель передать 0xFFFFFFFF. Будешь делать валидацию?

Если ограничить приложение для просмотра только своей директорией запуска (и адреса и диапазон ячеек памяти выделенными системой контролировать) + данные из других директорий только копировать (при просмотре других директорий), то может это будет наиболее правильно для повышения "вирусоустойчивости" системы. :)

P.S. Можно ещё ввести проверку валидности ядра системы по какой то форме сертификатов.

Автор:  Leency [ Пт окт 06, 2017 11:51 pm ]
Заголовок сообщения:  Re: OpenDialog

Не холиварте плиз.

Автор:  Leency [ Вт май 22, 2018 10:58 pm ]
Заголовок сообщения:  Re: OpenDialog

Появился серьезный баг в ночных сборках:
1. любым способом запускаем OpenDial
2. нажимаем клавишу End

=> падение программы

Вложения:
opendial bug.png
opendial bug.png [ 36.21 КБ | 610 просмотров ]

Автор:  punk_joker [ Вт май 22, 2018 11:07 pm ]
Заголовок сообщения:  Re: OpenDialog

Проблема есть, но несколько иная. Opendialog падает при большом количестве файлов (число не сажу, но например корень рамдиска подходит). Падает в том числе и при простом скроллинге.

Автор:  0CodErr [ Чт май 24, 2018 9:20 am ]
Заголовок сообщения:  Re: OpenDialog

Leency писал(а):
Появился серьезный баг
punk_joker писал(а):
падает при большом количестве файлов
Когда появился? Найдите проблемную ревизию тогда или это всегда было(я не замечал такого раньше)?

Автор:  0CodErr [ Чт май 24, 2018 11:17 am ]
Заголовок сообщения:  Re: OpenDialog

punk_joker писал(а):
Opendialog падает при большом количестве файлов (число не сажу, но например корень рамдиска подходит).
Всё же, наверное, проблема не в количестве файлов(создал 10000 файлов с помощью GenFiles viewtopic.php?f=9&t=3294)
Спойлер: Показать
Вложение:
1.PNG
1.PNG [ 72.19 КБ | 567 просмотров ]

Автор:  theonlymirage [ Пт авг 17, 2018 1:13 am ]
Заголовок сообщения:  Re: OpenDialog

Посмотрел, проблема с файлом "KERNEL.MNT". OpenDial будет вылетать при наличии любого файла с непустым именем и расширением ".MNT" (например, M.MNT).
Можно это легко проверить:
1) создайте в tmp0/1/ любой файл с расширением MNT или перетащите туда KERNEL.MNT
2) откройте OpenDial и зайдите в директорию tmp0/1/
3) наблюдаем вылет
В других приложениях идёт отсеивание по расширению, поэтому внутри TinyPad OpenDial работает корректно, так как файл ядра (при отрисовке списка) ему на глаза не попадается.

В icons.ini нужно задать иконку для файла ядра. Это самый простой вариант fix'а.
Код:
...
mnt=3
txt=3
...


Нужно будет латать OpenDial, чтобы при отсутствии заданной иконки (не задано расширение или номер за пределами общего изображения), отображалась default иконка.

Автор:  theonlymirage [ Пт авг 17, 2018 2:15 pm ]
Заголовок сообщения:  Re: OpenDialog

Что-то в проекте много дубликатов icons.ini (раскиданы по директориям).
Внёс временный fix в revision #7318, если файлом для билда не ошибся, то должно помочь.

В конце файла есть mnt=90 в разделе icons32, но видимо openDial игнорирует иконки из этого раздела или наоборот игнорирует сами разделы (но тогда читает mnt=90 и пытается найти 90ую иконку внутри icons16.png). Нужно смотреть его код.

Страница 2 из 2 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/