X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Fwinbind.c;h=bb05acd87dce10a5d2a4adee6feaac68da576fd0;hb=c9d584f5fa17f5fc368e81c63b0f5db1f8218cfd;hp=8d8e981db190c8c74075094778a0f6e33866c52f;hpb=f59ff103bcb3096e4678625d4d0481f808fd4844;p=ppp.git diff --git a/pppd/plugins/winbind.c b/pppd/plugins/winbind.c index 8d8e981..bb05acd 100644 --- a/pppd/plugins/winbind.c +++ b/pppd/plugins/winbind.c @@ -296,15 +296,18 @@ unsigned int run_ntlm_auth(const char *username, if (forkret == 0) { /* child process */ + uid_t uid; + close(child_out[0]); close(child_in[1]); /* run winbind as the user that invoked pppd */ setgid(getgid()); - setuid(getuid()); + uid = getuid(); + if (setuid(uid) == -1 || getuid() != uid) + fatal("pppd/winbind: could not setuid to %d: %m", uid); execl("/bin/sh", "sh", "-c", ntlm_auth, NULL); - perror("pppd/winbind: could not exec /bin/sh"); - exit(1); + fatal("pppd/winbind: could not exec /bin/sh: %m"); } /* parent */