Board.KolibriOS.org

Official KolibriOS board
It is currently Wed May 22, 2019 12:02 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 30 posts ]  Go to page Previous 1 2
Author Message
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 3:54 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
Проблема глубже - в отсутствии валидации параметров в библиотеке.
И как ты себе эту "валидацию" представляешь?
IgorA wrote:
Если фильтр больше чем 4кб то программа и OpenDialog теперь падать не должны. OpenDialog такой фильтр проигнорирует и запустится без фильтра.
А если я вот хочу такой большой фильтр? Не важно, зачем. Вот хочу и всё!
На мой взгляд такая проверка лишняя. Правильным является следование документации.
Дело хозяйское, конечно.
Но не думаю, что кто-то в серьёзных проектах делал бы подобные "фиксы" только из-за того, что кто-то там не правильно передал параметры.


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 5:28 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
0CodErr wrote:
А если я вот хочу такой большой фильтр? Не важно, зачем. Вот хочу и всё!
На мой взгляд такая проверка лишняя. Правильным является следование документации.

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

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

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 5:33 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
0CodErr wrote:
Siemargl wrote:
Проблема глубже - в отсутствии валидации параметров в библиотеке.
И как ты себе эту "валидацию" представляешь?

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 6:37 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
Design by contract
А какое отношение это имеет конкретно к нашему случаю?
А так всё правильно, конечно.
Каждому инструменту должно быть своё место.
Quote:
Языки, изначально поддерживающие средства для контрактного программирования:
...
Component Pascal, Modula-2, Modula-3, Oberon-2, Oberon-07/11, Zonnon, Active Oberon, Ada 2012

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 8:34 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
0CodErr wrote:
Siemargl wrote:
Design by contract
А какое отношение это имеет конкретно к нашему случаю?
А так всё правильно, конечно.
Каждому инструменту должно быть своё место.

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 9:43 pm 
Offline

Joined: Mon Mar 27, 2006 6:33 am
Posts: 658
0CodErr wrote:
Я могу указатель передать 0xFFFFFFFF. Будешь делать валидацию?

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

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Oct 06, 2017 11:51 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
Не холиварте плиз.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: OpenDialog
PostPosted: Tue May 22, 2018 10:58 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
Появился серьезный баг в ночных сборках:
1. любым способом запускаем OpenDial
2. нажимаем клавишу End

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


Attachments:
opendial bug.png
opendial bug.png [ 36.21 KiB | Viewed 1741 times ]

_________________
Через тернии к звездам
Top
   
 Post subject: Re: OpenDialog
PostPosted: Tue May 22, 2018 11:07 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1148
Проблема есть, но несколько иная. Opendialog падает при большом количестве файлов (число не сажу, но например корень рамдиска подходит). Падает в том числе и при простом скроллинге.

_________________
я лишь учусь


Top
   
 Post subject: Re: OpenDialog
PostPosted: Thu May 24, 2018 9:20 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Leency wrote:
Появился серьезный баг
punk_joker wrote:
падает при большом количестве файлов
Когда появился? Найдите проблемную ревизию тогда или это всегда было(я не замечал такого раньше)?


Top
   
 Post subject: Re: OpenDialog
PostPosted: Thu May 24, 2018 11:17 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
punk_joker wrote:
Opendialog падает при большом количестве файлов (число не сажу, но например корень рамдиска подходит).
Всё же, наверное, проблема не в количестве файлов(создал 10000 файлов с помощью GenFiles viewtopic.php?f=9&t=3294)
Spoiler: Show
Attachment:
1.PNG
1.PNG [ 72.19 KiB | Viewed 1698 times ]


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Aug 17, 2018 1:13 am 
Offline

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

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


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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Fri Aug 17, 2018 2:15 pm 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
Что-то в проекте много дубликатов icons.ini (раскиданы по директориям).
Внёс временный fix в revision #7318, если файлом для билда не ошибся, то должно помочь.

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


Top
   
 Post subject: Re: OpenDialog
PostPosted: Sun Sep 09, 2018 1:22 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
theonlymirage
Ты совершенно прав, OpenDial не использует libini, вместо этого свою кастомную функцию парсинга. Охохох.


Quote:
Что-то в проекте много дубликатов icons.ini (раскиданы по директориям).
Самого это жутко бесит, а причина в том, что в них есть переводимый текст http://prntscr.com/ks6qup

_________________
Через тернии к звездам


Top
   
 Post subject: Re: OpenDialog
PostPosted: Sun Sep 16, 2018 8:04 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Leency wrote:
Quote:
Что-то в проекте много дубликатов icons.ini (раскиданы по директориям).
Самого это жутко бесит, а причина в том, что в них есть переводимый текст http://prntscr.com/ks6qup
Наверное, речь шла не про icons.ini, а про icon.ini.
http://websvn.kolibrios.org/filedetails ... Ficons.ini
http://websvn.kolibrios.org/filedetails ... 2Ficon.ini


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 30 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited