summaryrefslogtreecommitdiffstats
path: root/contrib/openpam/lib/openpam_ttyconv.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/openpam/lib/openpam_ttyconv.c')
-rw-r--r--contrib/openpam/lib/openpam_ttyconv.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/contrib/openpam/lib/openpam_ttyconv.c b/contrib/openpam/lib/openpam_ttyconv.c
index ed4ac63..cad2a1b 100644
--- a/contrib/openpam/lib/openpam_ttyconv.c
+++ b/contrib/openpam/lib/openpam_ttyconv.c
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#25 $
+ * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#26 $
*/
#include <sys/types.h>
@@ -66,7 +66,7 @@ prompt(const char *msg)
struct sigaction action, saved_action;
sigset_t saved_sigset, sigset;
unsigned int saved_alarm;
- int eof, error, fd, timed_out;
+ int eof, error, fd;
size_t len;
char *retval;
char ch;
@@ -86,9 +86,9 @@ prompt(const char *msg)
#endif
fd = fileno(stdin);
buf[0] = '\0';
- timed_out = 0;
- eof = error = timed_out = 0;
- saved_alarm = alarm(openpam_ttyconv_timeout);
+ eof = error = 0;
+ if (openpam_ttyconv_timeout >= 0)
+ saved_alarm = alarm(openpam_ttyconv_timeout);
ch = '\0';
for (len = 0; ch != '\n' && !eof && !error; ++len) {
switch (read(fd, &ch, 1)) {
@@ -106,10 +106,12 @@ prompt(const char *msg)
break;
}
}
- alarm(0);
+ if (openpam_ttyconv_timeout >= 0)
+ alarm(0);
sigaction(SIGALRM, &saved_action, NULL);
sigprocmask(SIG_SETMASK, &saved_sigset, NULL);
- alarm(saved_alarm);
+ if (openpam_ttyconv_timeout >= 0)
+ alarm(saved_alarm);
if (error == EINTR)
fputs(" timeout!", stderr);
if (error || eof) {
OpenPOWER on IntegriCloud