LINUX.ORG.RU

Множественный вызов seteuid

 


0

3

Разбираюсь с кодом старенького фаззера системных вызовов. В коде присутствует вот такая штука:

seteuid(65536);
seteuid(65536);
(void)setgid(65536);
seteuid(65536);
Вопрос, зачем это делать столько раз?

★★★

Возможно вместо этого нужно было проверять возвращаемое значение и от этого уже плясать?!

Boy_from_Jungle ★★★★
()

Пара мыслей на эту тему.

Что делает setuid (без буквы e):

  • Если текущий effective uid равен нулю, то устанавливает effective uid, real uid и saved uid.
  • Если не равен, устанавливает только effective uid, но только если новый uid равен либо real uid, либо saved uid.

Что делает seteuid (с буквой e):

  • Если текущий effective uid равен нулю, то устанавливает effective uid.
  • Если не равен, то устанавливает effective uid, но только если новый uid равен либо real uid, либо saved uid.

То есть, если изначально effective uid равен нулю, то набор проверок, которые делают seteuid() и setuid() при первом вызове и при втором немного различаются.

Не совсем понятно, зачем такой тест для seteuid; наверное это такой стресс-тест, который писался с оглядкой на возможные ляпы
в реализации seteuid, о которых знал автор.

PS. Напомнило: Ineffective Sorts

gv
()
Последнее исправление: gv (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.