16 #include <sys/types.h> 23 #include "lirc/lirc_log.h" 28 #ifdef HAVE_INT_GETGROUPLIST_GROUPS 31 #define lirc_gid gid_t 40 int group_cnt =
sizeof(groups)/
sizeof(gid_t);
41 char groupnames[256] = {0};
48 user = getenv(
"SUDO_USER");
56 r = getgrouplist(user, pw->pw_gid, groups, &group_cnt);
61 r = setgroups(group_cnt, groups);
66 r = setgid(pw->pw_gid);
71 r = set_some_uid(pw->pw_uid);
76 setenv(
"HOME", pw->pw_dir, 1);
78 for (i = 0; i < group_cnt; i += 1) {
79 snprintf(buff, 5,
" %d", groups[i]);
80 strcat(groupnames, buff);
82 log_debug(
"Groups: [%d]:%s", pw->pw_gid, groupnames);
93 if (strcmp(
"root", new_user) == 0)
94 puts(
"Warning: Running as root.");
95 else if (strlen(new_user) == 0)
96 puts(
"Warning: Cannot change uid.");
98 printf(
"Running as regular user %s\n", new_user);
#define log_debug(fmt,...)
#define log_perror_err(fmt,...)
void drop_root_cli(int(*set_some_uid)(uid_t))
const char * drop_sudo_root(int(*set_some_uid)(uid_t))
#define log_perror_warn(fmt,...)
#define log_notice(fmt,...)