#!/bin/bash

# https://man7.org/linux/man-pages/man8/ld.so.8.html
# 根据man手册，这些环境变量会干扰ld.so的正常工作
# 由于对deepin-security-loader-exec 进行了setcap操作,因此以上环境变量理论上不会影响到deepin-security-loader-exec；
# 通过env -u清理这些环境变量是为了避免在某些情况下，deepin-security-loader-exec无法正常启动的情况；
# 相比shell内建unset，env -u更靠近最终exec，能减少外部安全软件在子进程启动链路中重新注入环境变量的影响；
# 如果外部调用者直接使用deepin-security-loader-exec，依旧无法通过LD相关环境变量来影响deepin-security-loader-exec的正常工作；
# 即使出现无法执行，也仅仅是调用者无法正常调用；

exec env \
    -u LD_ASSUME_KERNEL \
    -u LD_BIND_NOW \
    -u LD_LIBRARY_PATH \
    -u LD_PRELOAD \
    -u LD_TRACE_LOADED_OBJECTS \
    -u LD_AUDIT \
    -u LD_BIND_NOT \
    -u LD_DEBUG \
    -u LD_DEBUG_OUTPUT \
    -u LD_DYNAMIC_WEAK \
    -u LD_HWCAP_MASK \
    -u LD_ORIGIN_PATH \
    -u LD_POINTER_GUARD \
    -u LD_PROFILE \
    -u LD_PROFILE_OUTPUT \
    -u LD_SHOW_AUXV \
    -u LD_TRACE_PRELINKING \
    -u LD_USE_LOAD_BIAS \
    -u LD_VERBOSE \
    -u LD_WARN \
    -u LD_PREFER_MAP_32BIT_EXEC \
    /usr/bin/deepin-security-loader-exec "$@"
