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 */
}
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]);
if (red == 0)
break;
if (red < 0) {
+ if (errno == EINTR)
+ continue;
error("Can't read secret from %s: %m", promptprog);
readgood = -1;
break;