| 1018 | } |
| 1019 | |
| 1020 | static void |
| 1021 | get_credentials(void) |
| 1022 | { |
| 1023 | if (geteuid()) |
| 1024 | die("Must be started as root"); |
| 1025 | if (getegid() && setegid(0) < 0) |
| 1026 | die("Cannot switch to root group: %m"); |
| 1027 | |
| 1028 | orig_uid = getuid(); |
| 1029 | orig_gid = getgid(); |
| 1030 | invoked_by_root = !orig_uid; |
| 1031 | |
| 1032 | if (as_uid >= 0 || as_gid >= 0) |
| 1033 | { |
| 1034 | if (!invoked_by_root) |
| 1035 | die("You must be root to use --as-uid or --as-gid"); |
| 1036 | if (as_uid < 0 || as_gid < 0) |
| 1037 | die("--as-uid and --as-gid must be used either both or none"); |
| 1038 | orig_uid = as_uid; |
| 1039 | orig_gid = as_gid; |
| 1040 | } |
| 1041 | } |
| 1042 | |
| 1043 | static void |
| 1044 | do_cleanup(void) |
no outgoing calls
no test coverage detected
searching dependent graphs…