X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fplugins%2Fpassprompt.c;h=743c087b47805ea002b026dd7cf36a6b2ef5afb4;hp=7cd0a2bfe1cbac8a0f29a23b0c2319c1c0080497;hb=HEAD;hpb=bdd34ab1f2f87acb23c6d92feee7354ac53005ff diff --git a/pppd/plugins/passprompt.c b/pppd/plugins/passprompt.c index 7cd0a2b..7779d51 100644 --- a/pppd/plugins/passprompt.c +++ b/pppd/plugins/passprompt.c @@ -12,15 +12,26 @@ #include #include #include +#include +#include +#include #include +#include +#include +#include +#include + #include +#include +#include +#include char pppd_version[] = PPPD_VERSION; static char promptprog[PATH_MAX+1]; static int promptprog_refused = 0; -static option_t options[] = { +static struct option options[] = { { "promptprog", o_string, promptprog, "External PAP password prompting program", OPT_STATIC, NULL, PATH_MAX }, @@ -53,7 +64,7 @@ static int promptpass(char *user, char *passwd) if (!kid) { /* we are the child, exec the program */ char *argv[5], fdstr[32]; - sys_close(); + ppp_sys_close(); closelog(); close(p[0]); ret = seteuid(getuid()); @@ -64,10 +75,10 @@ static int promptpass(char *user, char *passwd) if (ret != 0) { warn("Couldn't set effective user id"); } - argv[0] = promptprog; - argv[1] = user; - argv[2] = remote_name; sprintf(fdstr, "%d", p[1]); + argv[0] = promptprog; + argv[1] = strdup(user); + argv[2] = strdup(ppp_remote_name()); argv[3] = fdstr; argv[4] = 0; execv(*argv, argv); @@ -82,7 +93,7 @@ static int promptpass(char *user, char *passwd) if (red == 0) break; if (red < 0) { - if (errno == EINTR && !got_sigterm) + if (errno == EINTR && !ppp_signaled(SIGTERM)) continue; error("Can't read secret from %s: %m", promptprog); readgood = -1; @@ -94,7 +105,7 @@ static int promptpass(char *user, char *passwd) /* now wait for child to exit */ while (waitpid(kid, &wstat, 0) < 0) { - if (errno != EINTR || got_sigterm) { + if (errno != EINTR || ppp_signaled(SIGTERM)) { warn("error waiting for %s: %m", promptprog); break; } @@ -118,7 +129,7 @@ static int promptpass(char *user, char *passwd) void plugin_init(void) { - add_options(options); + ppp_add_options(options); pap_passwd_hook = promptpass; #ifdef PPP_WITH_EAPTLS eaptls_passwd_hook = promptpass;