diff options
| author | Ken Raeburn <raeburn@mit.edu> | 1999-10-22 22:17:35 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 1999-10-22 22:17:35 +0000 |
| commit | 34a58b737bec267bef230600d9f400cc54cc8abc (patch) | |
| tree | f9d0ae517501b38630367374cfafd9f71c63d25e /src/lib | |
| parent | cd58663542549b700507e03c95c29ea5398f59b0 (diff) | |
| download | krb5-34a58b737bec267bef230600d9f400cc54cc8abc.tar.gz krb5-34a58b737bec267bef230600d9f400cc54cc8abc.tar.xz krb5-34a58b737bec267bef230600d9f400cc54cc8abc.zip | |
Silence gcc longjmp warnings:
* prompter.c (krb5_prompter_posix): Make ointrfunc, fd, and errcode volatile.
* promptusr.c (krb5_os_get_tty_uio): Make ointrfunc and retval volatile.
* read_pwd.c (krb5_read_password): Make ointrfunc volatile. Fix volatile decl
for readin_string (pointer is volatile, doesn't point to volatile).
* changepw.c (krb5_change_password): Wait only two minutes, not indefinitely,
for a response from the kpasswd server.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11873 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/krb5/os/ChangeLog | 13 | ||||
| -rw-r--r-- | src/lib/krb5/os/changepw.c | 18 | ||||
| -rw-r--r-- | src/lib/krb5/os/prompter.c | 6 | ||||
| -rw-r--r-- | src/lib/krb5/os/promptusr.c | 4 | ||||
| -rw-r--r-- | src/lib/krb5/os/read_pwd.c | 4 |
5 files changed, 38 insertions, 7 deletions
diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 0f4d8c3e8..463e7da74 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,16 @@ +1999-10-22 Ken Raeburn <raeburn@mit.edu> + + * prompter.c (krb5_prompter_posix): Make ointrfunc, fd, and + errcode volatile. + * promptusr.c (krb5_os_get_tty_uio): Make ointrfunc and retval + volatile. + * read_pwd.c (krb5_read_password): Make ointrfunc volatile. Fix + volatile decl for readin_string (pointer is volatile, doesn't + point to volatile). + + * changepw.c (krb5_change_password): Wait only two minutes, not + indefinitely, for a response from the kpasswd server. + 1999-10-18 Ken Raeburn <raeburn@mit.edu> * localaddr.c (krb5_os_localaddr): Don't bother trying to create diff --git a/src/lib/krb5/os/changepw.c b/src/lib/krb5/os/changepw.c index 8a577c222..c8120f276 100644 --- a/src/lib/krb5/os/changepw.c +++ b/src/lib/krb5/os/changepw.c @@ -188,6 +188,9 @@ krb5_change_password(context, creds, newpw, result_code, for (i=0; i<naddr_p; i++) { + fd_set fdset; + struct timeval timeout; + if (connect(s2, &addr_p[i], sizeof(addr_p[i])) == SOCKET_ERROR) { if ((SOCKET_ERRNO == ECONNREFUSED) || (SOCKET_ERRNO == EHOSTUNREACH)) @@ -288,6 +291,21 @@ krb5_change_password(context, creds, newpw, result_code, chpw_rep.data = (char *) malloc(chpw_rep.length); /* XXX need a timeout/retry loop here */ + FD_ZERO (&fdset); + FD_SET (s1, &fdset); + timeout.tv_sec = 120; + timeout.tv_usec = 0; + switch (select (s1 + 1, &fdset, 0, 0, &timeout)) { + case -1: + code = SOCKET_ERRNO; + goto cleanup; + case 0: + code = ETIMEDOUT; + goto cleanup; + default: + /* fall through */ + ; + } /* "recv" would be good enough here... except that Windows/NT commits the atrocity of returning -1 to indicate failure, diff --git a/src/lib/krb5/os/prompter.c b/src/lib/krb5/os/prompter.c index b43e0ae0e..800377f78 100644 --- a/src/lib/krb5/os/prompter.c +++ b/src/lib/krb5/os/prompter.c @@ -34,12 +34,12 @@ krb5_prompter_posix(krb5_context context, register char *ptr; int scratchchar; - krb5_sigtype (*ointrfunc)(); - krb5_error_code errcode; + krb5_sigtype (*volatile ointrfunc)(); + volatile krb5_error_code errcode; int i; #ifndef ECHO_PASSWORD struct termios echo_control, save_control; - int fd; + volatile int fd; #endif if (name) { diff --git a/src/lib/krb5/os/promptusr.c b/src/lib/krb5/os/promptusr.c index c38ecc927..3ac3d4f08 100644 --- a/src/lib/krb5/os/promptusr.c +++ b/src/lib/krb5/os/promptusr.c @@ -41,8 +41,8 @@ krb5_os_get_tty_uio(context, uio) krb5_context context; krb5_uio uio; { - krb5_error_code retval; - krb5_sigtype (*ointrfunc)(); + volatile krb5_error_code retval; + krb5_sigtype (*volatile ointrfunc)(); krb5_uio p; struct termios echo_control, save_control; int fd; diff --git a/src/lib/krb5/os/read_pwd.c b/src/lib/krb5/os/read_pwd.c index 4deabe2fd..4adee3dc4 100644 --- a/src/lib/krb5/os/read_pwd.c +++ b/src/lib/krb5/os/read_pwd.c @@ -60,10 +60,10 @@ krb5_read_password(context, prompt, prompt2, return_pwd, size_return) { /* adapted from Kerberos v4 des/read_password.c */ /* readin_string is used after a longjmp, so must be volatile */ - volatile char *readin_string = 0; + char *volatile readin_string = 0; register char *ptr; int scratchchar; - krb5_sigtype (*ointrfunc)(); + krb5_sigtype (*volatile ointrfunc)(); krb5_error_code errcode; #ifndef ECHO_PASSWORD struct termios echo_control, save_control; |
