[devel] __libc_enable_secure в openssl libcrypto

Mikhail Novosyolov mikhailnov на altlinux.org
Сб Апр 18 02:21:43 MSK 2020


Попробовал собрать AppImage на основе библиотек из Альта. AppImage - это такая штука, где сбандлены необходимые для работы программы библиотеки, но libc используется системная, что позволяет и программу запускать в разных дистрибутивах, и системные плагины NSS использовать. Для этой цели собрал в сизиф пакет linuxdeployqt.

Оказалось, что libcrypto.so.10 (я делал на основе p8, то же самое будет относиться и к сизифу) использует внутренний в glibc интерфейс __libc_enable_secure, который не выведен наружу в других дистрибутивах.

Это сделано патчем openssl-owl-alt-issetugid.patch:
> --- openssl/crypto/uid.c
> +++ openssl/crypto/uid.c
> @@ -77,8 +77,12 @@ int OPENSSL_issetugid(void)
>  # include OPENSSL_UNISTD
>  # include <sys/types.h>
>  
> +extern int __libc_enable_secure;
> +
>  int OPENSSL_issetugid(void)
>  {
> +    if (__libc_enable_secure)
> +        return 1;
>      if (getuid() != geteuid())
>          return 1;
>      if (getgid() != getegid())
В связи с этим возник вопрос: в Альте glibc запатчен, чтобы вывести эту внутреннюю функцию?

Используется ли она в каких-либо еще внешних потребителях?



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