X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fplugins%2Fpassprompt.c;h=1d885fcea53ba53fa732381ad69be3737def9ad5;hp=a579b912e70cfec5140b5396192b0e05ae3c4eb2;hb=7717de525ac3b730df56390c5283fe22ca184bc4;hpb=95d719f47943c479df4d7bf13eb928567392166d diff --git a/pppd/plugins/passprompt.c b/pppd/plugins/passprompt.c index a579b91..1d885fc 100644 --- a/pppd/plugins/passprompt.c +++ b/pppd/plugins/passprompt.c @@ -14,6 +14,8 @@ #include #include "pppd.h" +char pppd_version[] = VERSION; + static char promptprog[PATH_MAX+1]; static option_t options[] = { @@ -28,7 +30,7 @@ static int promptpass(char *user, char *passwd) int p[2]; pid_t kid; int readgood, wstat; - size_t red; + ssize_t red; if (promptprog[0] == 0 || access(promptprog, X_OK) < 0) return -1; /* sorry, can't help */ @@ -48,7 +50,7 @@ static int promptpass(char *user, char *passwd) } if (!kid) { /* we are the child, exec the program */ - char *argv[4], fdstr[32]; + char *argv[5], fdstr[32]; sys_close(); closelog(); close(p[0]); @@ -72,6 +74,8 @@ static int promptpass(char *user, char *passwd) if (red == 0) break; if (red < 0) { + if (errno == EINTR) + continue; error("Can't read secret from %s: %m", promptprog); readgood = -1; break;