• tilt
  • xdg-compat
  • Issues
  • #1

Closed
Open
Opened 2015-09-18T20:19Z by tilt @tilt

rundir-helper: unclear permissions checking in main() vs. xdg_compat_set_euser()

The functionmain()of "rundir-helper.c" checks if the option "--as-system" has been given, if yes, effective instead of real UIDs are used for directory checking and manipulation; the function main() also checks if the executing (real) user has the permission to use the "--as-system" option; the functionxdg_compat_set_euser()afterwards implements three different setups of EUID/EGID: (1) normal mode of operation (2) run entirely as executing user (option --as-user given) (3) run entirely as system service user (option --as-system given).

FIXME: The above described implementation of different possible EUID/EGID setups is ugly as it spreads permissions checking out between main() andxdg_compat_set_euser(). Also the use of "ruid" and "rgid" for values that really are EUIDs and EGIDs in the case that the "--as-system" option is given, is confusing.

Please solve the reCAPTCHA

We want to be sure it is you, please confirm you are not a robot.

  • tilt
    tilt @tilt · 2015-09-18T18:21Z

    The relevant permissions check has been moved to a more prominent position inmain()of "rundir-helper.c".xdg_compat_set_euser()still performs some checking, but it's essentially redundant, does not fully apply (because it relies ongeteuid()which could be too late) and will be deleted; it is entirely up to the caller to ensure the integrity of (E|R)UID and (E|R)GID, and the documentation should be updated to clearly state so.