Browse code

sshchat: FIX: the port number was stored in a wrongly sized variable

Dario Rodriguez authored on 17/12/2015 13:49:16
Showing 1 changed files
... ...
@@ -35,7 +35,8 @@ main(int argc, char *argv[])
35 35
 	char id[MAXIDSIZE];
36 36
 	int fd,n;
37 37
 	char *ptr;
38
-	char *host,port;
38
+	char *host;
39
+	int port;
39 40
 	long hostsize;
40 41
 	int socket;
41 42
 	sbuf *c2s,*s2c;
... ...
@@ -103,7 +104,7 @@ main(int argc, char *argv[])
103 104
 			continue;
104 105
 		nreadfds=sselect_getread(ssel,readfds,sizeof(readfds)/sizeof(readfds[1]));		
105 106
 		nwritefds=sselect_getwrite(ssel,writefds,sizeof(writefds)/sizeof(writefds[1]));		
106
-		for(i=0;i<nreadfds;i++) {
107
+		for(i=0;i<nreadfds && i<(sizeof(readfds)/sizeof(readfds[0]));i++) {
107 108
 			if(readfds[i]==INFD && sbuf_count(c2s)<BUFSIZE) {
108 109
 				if((queued=sock_queued(readfds[i]))==0) {
109 110
 					forcedexit=1;
... ...
@@ -121,7 +122,7 @@ main(int argc, char *argv[])
121 122
 				sbuf_fill(s2c,socket,queued);
122 123
 			}
123 124
 		}
124
-		for(i=0;i<nwritefds;i++) {
125
+		for(i=0;i<nwritefds && i<(sizeof(writefds)/sizeof(writefds[0]));i++) {
125 126
 			if(writefds[i]==OUTFD && sbuf_count(s2c)>0)
126 127
 				sbuf_send(s2c,OUTFD,sbuf_count(s2c));
127 128
 			if(writefds[i]==socket && sbuf_count(c2s)>0)