summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2002-05-23 00:52:00 +0000
committerKen Raeburn <raeburn@mit.edu>2002-05-23 00:52:00 +0000
commitf45edae0d227f2372a1b6529c590626720ee467a (patch)
tree7c013f0da0a32a00fded93608baf4126ee62b477 /src
parent2b1c76e215047f85ef3ff3d96ff5c763c4bd5755 (diff)
downloadkrb5-f45edae0d227f2372a1b6529c590626720ee467a.tar.gz
krb5-f45edae0d227f2372a1b6529c590626720ee467a.tar.xz
krb5-f45edae0d227f2372a1b6529c590626720ee467a.zip
* krlogin.c (oob): Loop reading data until we actually reach the URG marker
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14448 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/appl/bsd/ChangeLog5
-rw-r--r--src/appl/bsd/krlogin.c19
2 files changed, 17 insertions, 7 deletions
diff --git a/src/appl/bsd/ChangeLog b/src/appl/bsd/ChangeLog
index bbdf547dc9..6c409afaa1 100644
--- a/src/appl/bsd/ChangeLog
+++ b/src/appl/bsd/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-22 Ken Raeburn <raeburn@mit.edu>
+
+ * krlogin.c (oob): Loop reading data until we actually reach the
+ URG marker.
+
2002-03-26 Ken Raeburn <raeburn@mit.edu>
* defines.h (FAI_PREFIX): Don't define.
diff --git a/src/appl/bsd/krlogin.c b/src/appl/bsd/krlogin.c
index 7831298975..c497dc2fb6 100644
--- a/src/appl/bsd/krlogin.c
+++ b/src/appl/bsd/krlogin.c
@@ -1469,20 +1469,25 @@ int server_message(mark)
void oob()
{
char mark;
- char waste[RLOGIN_BUFSIZ];
- int atmark;
+ static char waste[RLOGIN_BUFSIZ];
+ int atmark, n;
mark = 0;
recv(rem, &mark, 1, MSG_OOB);
if (server_message(mark)) {
- if (ioctl(rem, SIOCATMARK, &atmark) < 0) {
- perror("ioctl");
- return;
+ for (;;) {
+ if (ioctl(rem, SIOCATMARK, &atmark) < 0) {
+ perror("ioctl");
+ return;
+ }
+ if (atmark)
+ break;
+ n = read(rem, waste, sizeof (waste));
+ if (n <= 0)
+ break;
}
- if (!atmark)
- read(rem, waste, sizeof (waste));
}
}