[Cluster-devel] cluster/cman/daemon daemon.c
fabbione at sourceware.org
fabbione at sourceware.org
Tue Jun 19 12:32:20 UTC 2007
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: fabbione at 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;
More information about the Cluster-devel
mailing list