X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Ftty.c;h=7e208badaff078c20c3ed8345c12778c769f5fbf;hb=bdd34ab1f2f87acb23c6d92feee7354ac53005ff;hp=41328fbaacdbb202c68a80a4f75b1e8887a85506;hpb=2883dd07101bf851e2ea368f0c04c91aea85cff2;p=ppp.git 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); }