[1274] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

krb5b4pl3: appl/bsd/krshd.c: should use proper select() macros

daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Fri Mar 24 13:59:43 1995

From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Fri, 24 Mar 1995 14:02:56 -0500
To: krb5-bugs@MIT.EDU

See the Subject.

Patch:

--- krshd.c	1995/03/23 20:47:29	1.3
+++ krshd.c	1995/03/24 18:58:40
@@ -358,7 +358,7 @@
 	    exit(2);
 	}
 	
-	if ((fd = accept(s, &from, &fromlen)) < 0) {
+	if ((fd = accept(s, (struct sockaddr *) &from, &fromlen)) < 0) {
 	    fprintf(stderr, "Error in accept: %s\n", strerror(errno));
 	    exit(2);
 	}
@@ -507,7 +507,7 @@
     char *hostname;
     short port;
     int pv[2], cc;
-    long ready, readfrom;
+    fd_set ready, readfrom;
     char buf[BUFSIZ], sig;
     int one = 1;
     krb5_sigtype     cleanup();
@@ -1083,7 +1083,9 @@
 	    
 	    (void) close(0); (void) close(1); (void) close(2);
 	    (void) close(f); (void) close(pv[1]);
-	    readfrom = (1L<<s) | (1L<<pv[0]);
+	    FD_ZERO(&readfrom);
+	    FD_SET(s, &readfrom);
+	    FD_SET(pv[0], &readfrom);
 	    ioctl(pv[0], FIONBIO, (char *)&one);
 	    /* should set s nbio! */
 	    do {
@@ -1091,24 +1093,24 @@
 		if (select(16, &ready, (fd_set *)0,
 			   (fd_set *)0, (struct timeval *)0) < 0)
 		  break;
-		if (ready & (1L<<s)) {
+		if (FD_ISSET(s, &ready)) {
 		    if (read(s, &sig, 1) <= 0)
-		      readfrom &= ~(1L<<s);
+			FD_CLR(s, &readfrom);
 		    else {
 			signal(sig, cleanup);
 			killpg(pid, sig);
 		    }
 		}
-		if (ready & (1L<<pv[0])) {
+		if (FD_ISSET(pv[0], &ready)) {
 		    errno = 0;
 		    cc = read(pv[0], buf, sizeof (buf));
 		    if (cc <= 0) {
 			shutdown(s, 1+1);
-			readfrom &= ~(1L<<pv[0]);
+			FD_CLR(pv[0], &readfrom);
 		    } else
 		      (void) write(s, buf, cc);
 		}
-	    } while (readfrom);
+	    } while (FD_ISSET(s, &readfrom) || FD_ISSET(pv[0], &readfrom));
 #ifdef KERBEROS
 	    syslog(LOG_INFO ,
 		   "Shell process completed.");

home help back first fref pref prev next nref lref last post