[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