[devel] I: xorg-server, dbus: SELinux support breaks software

Mikhail Efremov sem на altlinux.ru
Пн Авг 30 11:16:02 UTC 2010


On Mon, 30 Aug 2010 14:30:20 +0400 Alexey Gladkov wrote:
> > В коде is_selinux_enabled() нет проверки на невозможность прочитать.
> 
>   38         /* Drop back to detecting it the long way. */
>   39         fp = fopen("/proc/filesystems", "r");
>   40         if (!fp)
>   41                 return -1;
> 
> Здесь мы возвращаем -1. Зачем тут -1, почему не goto out; ?

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

>   44         while ((num = getline(&buf, &len, fp)) != -1) {
>   45                 if (strstr(buf, "selinuxfs")) {
>   46                         enabled = 1;
>   47                         break;
>   48                 }
>   49         }
>   50
>   51         if (num < 0)
>   52                 goto out;
> 
> Дим, проверка есть и в этом случае вернётся 0.

Возможно тут тоже должно быть return -1.

> > Тем не менее, эта функция определена таким образом, что может давать
> > три вида ответа: "да", "нет" и "нет способа определить".
 
Да, и теперь это даже документировано. Раньше не было, коммит от 18
марта.

-- 
WBR, Mikhail Efremov


Подробная информация о списке рассылки Devel