X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Ftty.c;fp=pppd%2Ftty.c;h=7e208badaff078c20c3ed8345c12778c769f5fbf;hp=41328fbaacdbb202c68a80a4f75b1e8887a85506;hb=eff574c871822c7e2788aa8a928f2480fa7a6cb3;hpb=b21711c71f2bf9537f5985339cf6e224738315ef diff --git a/pppd/tty.c b/pppd/tty.c index 41328fb..7e208ba 100644 --- a/pppd/tty.c +++ b/pppd/tty.c @@ -909,7 +909,7 @@ open_socket(char *dest) static int start_charshunt(int ifd, int ofd) { - int cpid; + int cpid, ret; cpid = safe_fork(ifd, ofd, (log_to_fd >= 0? log_to_fd: 2)); if (cpid == -1) { @@ -923,10 +923,14 @@ start_charshunt(int ifd, int ofd) log_to_fd = -1; else if (log_to_fd >= 0) log_to_fd = 2; - setgid(getgid()); - setuid(uid); - if (getuid() != uid) - fatal("setuid failed"); + ret = setgid(getgid()); + if (ret != 0) { + fatal("setgid failed, %m"); + } + ret = setuid(uid); + if (ret != 0 || getuid() != uid) { + fatal("setuid failed, %m"); + } charshunt(0, 1, record_file); exit(0); }