#ifdef __OpenBSD__
rv = getpwuid_r(uid, &mypwstore, mypwbuf, sizeof(mypwbuf), &mypw);
#ifdef __OpenBSD__
rv = getpwuid_r(uid, &mypwstore, mypwbuf, sizeof(mypwbuf), &mypw);
err(1, "getpwuid_r failed");
#else
for (size_t sz = 1024; sz <= 16*1024; sz *= 2) {
err(1, "getpwuid_r failed");
#else
for (size_t sz = 1024; sz <= 16*1024; sz *= 2) {
- if (strlcpy(myname, mypw->pw_name, sizeof(myname)) >= sizeof(myname))
- errx(1, "pw_name too long");
+ if (mypw == NULL)
+ errx(1, "no passwd entry for self");
ngroups = getgroups(NGROUPS_MAX, groups);
if (ngroups == -1)
err(1, "can't get groups");
ngroups = getgroups(NGROUPS_MAX, groups);
if (ngroups == -1)
err(1, "can't get groups");
if (!permit(uid, groups, ngroups, &rule, target, cmd,
(const char **)argv + 1)) {
syslog(LOG_AUTHPRIV | LOG_NOTICE,
if (!permit(uid, groups, ngroups, &rule, target, cmd,
(const char **)argv + 1)) {
syslog(LOG_AUTHPRIV | LOG_NOTICE,
#ifdef __OpenBSD__
rv = getpwuid_r(target, &targpwstore, targpwbuf, sizeof(targpwbuf), &targpw);
#ifdef __OpenBSD__
rv = getpwuid_r(target, &targpwstore, targpwbuf, sizeof(targpwbuf), &targpw);
errx(1, "no passwd entry for target");
#else
for (size_t sz = 1024; sz <= 16*1024; sz *= 2) {
errx(1, "no passwd entry for target");
#else
for (size_t sz = 1024; sz <= 16*1024; sz *= 2) {
- pamauth(targpw->pw_name, myname, !nflag, rule->options & NOPASS,
+ pamauth(targpw->pw_name, mypw->pw_name, !nflag, rule->options & NOPASS,
- myname, cmdline, targpw->pw_name, cwd);
+ mypw->pw_name, cmdline, targpw->pw_name, cwd);