Павлу Дворкину: о понимании того что делаешь и простых прави
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 05.11.09 13:58
Оценка: 2 (1) -3 :)
Не так давно от Павла прозвучало
Автор: Pavel Dvorkin
Дата: 18.10.09
следующее:

Я бы так сказал — язык С++ дает мне свободу делать все, что я хочу. А это неизбежно сопряжено с возможностью сделать и ошибку. Чтобы свободой как следует воспользоваться, надо хорошо понимать, что при этом можно, и что нельзя делать.


Я вот сижу и думаю, а может ну ее нафиг эту свободу, а? А то получится как с ядром линукса
Автор: kochetkov.vladimir
Дата: 05.11.09
:

pipe_read_open(struct inode *inode, struct file *filp)
{
    mutex_lock(&inode->i_mutex);
    inode->i_pipe->readers++;
    mutex_unlock(&inode->i_mutex);
    return 0;
}


а не

pipe_read_open(struct inode *inode, struct file *filp)
{
    int ret = -ENOENT;
    mutex_lock(&inode->i_mutex);
    if (inode->i_pipe) {
        ret = 0;
        inode->i_pipe->readers++;
    }
    mutex_unlock(&inode->i_mutex);
    return ret;
}


и приплыли — уязвимы все версии ядра линукса с 2001 года (хорошо хоть не во всех дистрибутивах)... И я не думаю, что писавший первоначальный вариант кода не понимал "что при этом можно, и что нельзя делать", он скорее просто не предполагал, что в другом процессе все же может произойти вызов free_pipe_info(), освобождающий i_pipe до того, как был установлен мьютекс.

"Суслика видите? А он есть..."

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.