The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Из ядра Linux будет удалён драйвер файловой системы ext3"
Отправлено Аноним, 17-Июл-15 00:04 
> Прикольная логика. Всерьез предлагается парсить мусор?

        read_blk(dquot->dq_h, blk, buf);
        if (depth == QT_TREEDEPTH - 1) {
                for (i = 0; i < QT_BLKSIZE >> 2; i++) {
                        blk = ext2fs_le32_to_cpu(ref[i]);
                        check_reference(dquot->dq_h, blk);
                        if (blk && !get_bit(bitmap, blk))
                                entries += report_block(dquot, blk, bitmap,
                                                        process_dquot, data);
                }

...

static void read_blk(struct quota_handle *h, unsigned int blk, dqbuf_t buf)
{
        int err;

        err = h->e2fs_read(&h->qh_qf, blk << QT_BLKSIZE_BITS, buf,
                        QT_BLKSIZE);
        if (err < 0)
                log_err("Cannot read block %u: %s", blk, strerror(errno));
        else if (err != QT_BLKSIZE)
                memset(buf + err, 0, QT_BLKSIZE - err);
}

как легко заметить read_blk может таки иметь ошибку (log_err только ругнется в консоль или syslog).
но это не мешает продолжать парсить прочитаное. Тоже самое относится к check_reference - которое проверяет индекс блока на валидность.. куда-то репортим об этом. реакции 0.

Вопрос - кем должен быть человек пропустивший такой код?
пример падения

e2fsck -f /dev/md0

Pass 5: Checking group summary information

[ERROR] quotaio_tree.c:590:check_reference:: Illegal reference (2711113728 >= 17) in user quota file. Quota file is probably corrupted.
Please run e2fsck (8) to fix it.
Signal (11) SIGSEGV si_code=SEGV_MAPERR fault addr=0x149e4110
e2fsck[0x42d26e]
/lib64/libc.so.6(+0x326b0)[0x7f98710816b0]
e2fsck[0x4303c8]
e2fsck[0x4302fd]
e2fsck[0x4302fd]
e2fsck[0x4302fd]
e2fsck(qtree_scan_dquots+0x7a)[0x43065a]
e2fsck(quota_compare_and_update+0xb2)[0x42dc92]
e2fsck(main+0x2279)[0x40db59]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f987106dd5d]
e2fsck[0x409c09]

все.. приплыли - больше вы починить ext4 не можете.

Правда умный человек пропустил такой код?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру