X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Fpassprompt.c;h=1d885fcea53ba53fa732381ad69be3737def9ad5;hb=fd1dcdf758418f040da3ed801ab001b5e46854e7;hp=5e6a7f90bb755026387fed5bab7f7a789fd55f5f;hpb=5951347a39047850943e0b0ee31d025c6560a47c;p=ppp.git diff --git a/pppd/plugins/passprompt.c b/pppd/plugins/passprompt.c index 5e6a7f9..1d885fc 100644 --- a/pppd/plugins/passprompt.c +++ b/pppd/plugins/passprompt.c @@ -30,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 */ @@ -50,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]); @@ -74,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;