summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>1999-10-22 22:17:35 +0000
committerKen Raeburn <raeburn@mit.edu>1999-10-22 22:17:35 +0000
commit34a58b737bec267bef230600d9f400cc54cc8abc (patch)
treef9d0ae517501b38630367374cfafd9f71c63d25e /src/lib
parentcd58663542549b700507e03c95c29ea5398f59b0 (diff)
downloadkrb5-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/ChangeLog13
-rw-r--r--src/lib/krb5/os/changepw.c18
-rw-r--r--src/lib/krb5/os/prompter.c6
-rw-r--r--src/lib/krb5/os/promptusr.c4
-rw-r--r--src/lib/krb5/os/read_pwd.c4
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;