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

Dmitry V. Levin ldv на altlinux.org
Пн Авг 30 13:09:29 UTC 2010


On Mon, Aug 30, 2010 at 02:30:20PM +0400, Alexey Gladkov wrote:
> 30.08.2010 14:21, Dmitry V. Levin 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; ?

Потому что out: выполняет fclose(fp) и возвращает 0/1.

>   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.

Люди, которые писали этот код, закрыли глаза на то, что, теоретически
возможна ситуация, когда getline(3) возвращает ошибку не из-за EOF.

Это проверка не на ошибку, а на EOF.  Если в этой точке num < 0, это
значит, что в файле /proc/filesystems нет selinuxfs.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100830/ee5fd473/attachment-0001.bin>


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