- if (args->uid != NULL) {
- uid_t uid = 0;
- unsigned long tmp;
-
- if (!isNumberUnsigned(args->uid, &tmp, false)) {
-#ifdef __dietlibc__
- struct passwd *pw;
- pw = getpwnam(args->uid);
- if (pw == NULL) {
- WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Username '");
- WRITE_STR(2, args->uid);
- WRITE_MSG(2, "' does not exist\n");
- return wrapper_exit_code;
- }
- uid = pw->pw_uid;
- Einitgroups(args->uid, pw->pw_gid);
- Esetgid(pw->pw_gid);
-#else
- WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Uid '");
- WRITE_STR(2, args->uid);
- WRITE_MSG(2, "' is not a number\n");
- return wrapper_exit_code;
-#endif
- }
- else
- uid = (uid_t) tmp;
-
- Esetuid((uid_t) uid);
- if (getuid()!=uid) {