Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Aug 24, 2019 1:26 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 62 posts ]  Go to page 1 2 3 4 5 Next

Удалить 58 сис. функцию из ядра?
Да. 55%  55%  [ 27 ]
Нет. 8%  8%  [ 4 ]
Мне пофиг. 37%  37%  [ 18 ]
Total votes: 49
Author Message
PostPosted: Thu Aug 26, 2010 2:36 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
В настоящее время 58 и 70 сис. функции выполняют схожие функции. 58 сис. функция досталась нам от MENUET.
Сейчас, все новые программы используют 70 сис. функцию.

Предлагаю удалить 58 сис. функцию, и больше не оборачиваться на совместимость.
Программы, у которых есть исходники, и они присутствуют на SVN будут переписаны на 70 сис. функцию.


Top
   
PostPosted: Thu Aug 26, 2010 2:41 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Для информации: среди подфункций 58-й функции есть LBA-чтение с IDE-дисков 58.16, у которого отсутствует аналог в 70-й функции и которое используется программой hdread, исходники которой отсутствуют.

ЗЫ на всякий случай: лично мне пофиг на судьбу 58-й функции в целом и приложения hdread в частности, так и голосовал.


Top
   
PostPosted: Thu Aug 26, 2010 3:43 pm 
Можно добавить такую-же подфункцию в функцию 70 если есть необходимость, так что я тоже проголосовал за третий вариант. Главное код работы с LBA не удалять.


Top
   
PostPosted: Fri Aug 27, 2010 5:50 am 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
Имхо, сначала нужно сделать аналог функции 58.12, и только потом уже удалять. Ибо удалить - самое легкое...

_________________
ушёл...


Top
   
PostPosted: Fri Aug 27, 2010 6:58 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1342
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.
Когда-нибудь эту дырку придется так или иначе затыкать.

ИМХО имеет смысл сохранить LBA-сервис как опциональную подфункцию SysFn 70 для экспериментальных и встроенных версий ядра, отключив ее (условно-компилируемым блоком) в транке.
Кому надо - тот легко сможет подключить ее для собственных нужд.


Top
   
PostPosted: Fri Sep 24, 2010 6:00 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 101
А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?

P.S.

Цитата: "Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите."

Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).


Top
   
PostPosted: Fri Sep 24, 2010 9:09 pm 
FireWall wrote:
А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?

Нельзя. Они не только отличаются номером функций подфункций. По сравнению с 70 функцией 58 вообще косорукий и одноногий инвалид. В 70 функции есть аналог VFS, 58 вообще не умеет возвращать директории в виде форматированного списка - она тупо возвращает содержимое либо файла либо папки в виде RAW данных. При работе с ней приложению (файловому менеджеру к примеру) приходилось самому разбираться со всей хитрой внутренней структурой каталогов FAT, про NTFS и Ext вообще речи не было на общесистемном уровне.


Top
   
PostPosted: Fri Sep 24, 2010 10:52 pm 
Offline

Joined: Wed Dec 26, 2007 5:09 am
Posts: 214
FireWall wrote:
Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).


К микроядерности это никакого отношения не имеет. В целом ряде древних систем с монолитным ядром системные вызовы делились на привилегированные и непривилегированные; первые были доступны ограниченному кругу задач (например, привилегированная задача могла убить любую задачу в системе, а непривилегированная -- только любую задачу своего же пользователя).


Top
   
PostPosted: Fri Oct 01, 2010 5:46 am 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh wrote:
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.

и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.

Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?


Top
   
PostPosted: Fri Oct 01, 2010 10:13 am 
Asper
Quote:
В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh wrote:
Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.

и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.

Можно сделать условную компиляцию. Правда этот вопрос надо еще проработать.
Quote:
Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?

Связаться вряд ли, но при желании можно переписать с нуля - ничего в ней сложного нет (учитывая наличие Box_Lib сейчас), только времени на все не хватает.


Top
   
PostPosted: Thu Oct 07, 2010 1:34 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Вобщем 59 функция выглядит так:

Code:
syscall_LBA_read_write:
    cmp   [lba_read_enabled], 1
    je     @f
    mov   eax, 10   ; LBA access denied
    ret
 @@:

    test  edi, edi
    jnz   @f
    mov   eax, 7    ; No pointer to buffer
    ret
 @@:
    test  esi, esi
    jnz   @f
 .err_dev_name:
    mov   eax, 1    ; No pointer to device name
    ret
 @@:
    movzx eax, byte [esi+4]
    sub   al, '0'
    inc   al
    cmp   dword [esi], '/hd/'
    je     @f

    cmp   dword [esi], '/bd/'
    jne   .err_dev_name
    dec   al
    add   al, 0x80
 @@:
    mov   [hdpos], eax

    push  ebx edi
    mov   eax, ecx
    xchg  ebx, edi
    test  edi, edi
    jz     .read
    cmp   edi, 1
    je     .write

    pop   edi ebx
    mov   eax, 2    ; Unknown function
    ret

 .read:
    call  hd_read
    jmp   .out

 .write:
    call  hd_write
 .out:
    pop   edi ebx
    xor   eax, eax
    cmp   [hd_error], 0
    je     @f
    mov   eax, 11   ; Device error
 @@:
    ret


в syscall.inc добавил:
Code:
      dd syscall_LBA_read_write           ; 59-LBA read and write

Attachment:
File comment: Собранное ядро с сис. функцией 59
KERNEL.MNT.txt [73.04 KiB]
Downloaded 167 times


Файл kernel.mnt.txt надо переименовать в kernel.mnt, форум блокирует "неизвестные" ему расширения.

Формат функции 59.

in:
eax = 59 ; номер функции
ebx = 0 или 1 ; номер подфункции: 0 - чтение, 1 - запись
ecx = номер блока для чтения/записи
edi = буфер данных для считывания/записи указанного блока (размером 512 байт)
esi = Путь к устройству (задаётся в формате 58 функции (например '/hd/2' или '/bd/1'))

out:
eax = код ошибки файловой системы

Программа считывающая MBR (винчестера или флешки) и опционально записывающая загрузочный сектор указанного устройства в файл /sys/bootsector.bin. Путь к устройству для считывания MBR зашито в коде программы (для смены устройства нужна перекомпиляция программы).
Attachment:
File comment: MBR reader
MBR_Reader.7z [9.89 KiB]
Downloaded 168 times


P.S. Я по прежнему считаю, что этой функции быть не должно в "нормальном" ядре.


Top
   
PostPosted: Thu Oct 07, 2010 3:01 pm 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
Я за то, чтобы такая функция была в официально в ядре. Всё равно нету никакого ограничения доступа. Может просто добавить функцию включения/выключения возможности прямого доступа к диску?

_________________
ушёл...


Top
   
PostPosted: Thu Oct 07, 2010 3:23 pm 
Зачем функцию? Можно сделать компиляцию по умолчанию без этой функции, а при необходимости компилировать с функцией.
Quote:
Всё равно нету никакого ограничения доступа.

Неверное размышление. Выражаясь иносказательно - если всем разрешено носить личное оружие это не значит, что любому должна быть доступна атомная бомба. А такая функция по умолчанию - это атомная бомба для данных жесткого диска.


Top
   
PostPosted: Thu Oct 07, 2010 4:06 pm 
Offline
User avatar

Joined: Wed Jan 27, 2010 10:59 am
Posts: 269
А может добавить в ядро диалог (только не смейтесь):
Code:
Программа XYZ пытается получить прямой доступ к диску "/hd0/1". Разрешить?
{Да} {Нет}

_________________
ушёл...


Top
   
PostPosted: Thu Oct 07, 2010 4:30 pm 
Падсталом... :lol:
Виста+Семерка - кошмарим юзера! :mrgreen:


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 62 posts ]  Go to page 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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