[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] cluster/cman/daemon daemon.c



CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	fabbione sourceware org	2007-06-19 12:32:19

Modified files:
	cman/daemon    : daemon.c 

Log message:
	Make sure to cleanup the buffer when processing each request or dirty data
	can be passed from one request to another.
	
	Add a barrier to make sure that the socket data are not bigger than the buffer
	or we overflow somewhere at random.
	
	These 2 changes should be backported to different stable branches.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/daemon.c.diff?cvsroot=cluster&r1=1.34&r2=1.35

--- cluster/cman/daemon/daemon.c	2007/05/21 10:48:40	1.34
+++ cluster/cman/daemon/daemon.c	2007/06/19 12:32:19	1.35
@@ -158,6 +158,8 @@
 		int len;
 		int totallen = 0;
 
+		memset(buf, 0, (MAX_CLUSTER_MESSAGE + sizeof(struct sock_header)));
+
 		len = read(fd, buf, sizeof(struct sock_header));
 
 		P_DAEMON("read %d bytes from fd %d\n", len, fd);
@@ -186,6 +188,11 @@
 			send_status_return(con, msg->command, -EINVAL);
 			return 0;
 		}
+		if ((msg->length-len) > MAX_CLUSTER_MESSAGE) {
+			P_DAEMON("message on socket is too big\n");
+			send_status_return(con, msg->command, -EINVAL);
+			return 0;
+		}
 
 		totallen = len;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]