• R
    fix faccessat to support AT_EACCESS flag · 0a05eace
    Rich Felker 提交于
    this is another case of the kernel syscall failing to support flags
    where it needs to, leading to horrible workarounds in userspace. this
    time the workaround requires changing uid/gid, and that's not safe to
    do in the current process. in the worst case, kernel resource limits
    might prevent recovering the original values, and then there would be
    no way to safely return. so, use the safe but horribly inefficient
    alternative: forking. clone is used instead of fork to suppress
    signals from the child.
    
    fortunately this worst-case code is only needed when effective and
    real ids mismatch, which mainly happens in suid programs.
    0a05eace
faccessat.c 1.2 KB