Skip to content

Commit

Permalink
Cluster PUBLISH message: fix totlen count.
Browse files Browse the repository at this point in the history
bulk_data field size was not removed from the count. It is not possible
to declare it simply as 'char bulk_data[]' since the structure is nested
into another structure.
  • Loading branch information
antirez committed Nov 28, 2014
1 parent 640d30c commit 669aa2a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
5 changes: 3 additions & 2 deletions src/cluster.c
Original file line number Diff line number Diff line change
Expand Up @@ -1482,7 +1482,8 @@ int clusterProcessPacket(clusterLink *link) {
} else if (type == CLUSTERMSG_TYPE_PUBLISH) {
uint32_t explen = sizeof(clusterMsg)-sizeof(union clusterMsgData);

explen += sizeof(clusterMsgDataPublish) +
explen += sizeof(clusterMsgDataPublish) -
8 +
ntohl(hdr->data.publish.msg.channel_len) +
ntohl(hdr->data.publish.msg.message_len);
if (totlen != explen) return 1;
Expand Down Expand Up @@ -2184,7 +2185,7 @@ void clusterSendPublish(clusterLink *link, robj *channel, robj *message) {

clusterBuildMessageHdr(hdr,CLUSTERMSG_TYPE_PUBLISH);
totlen = sizeof(clusterMsg)-sizeof(union clusterMsgData);
totlen += sizeof(clusterMsgDataPublish) + channel_len + message_len;
totlen += sizeof(clusterMsgDataPublish) - 8 + channel_len + message_len;

hdr->data.publish.msg.channel_len = htonl(channel_len);
hdr->data.publish.msg.message_len = htonl(message_len);
Expand Down
5 changes: 4 additions & 1 deletion src/cluster.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,10 @@ typedef struct {
typedef struct {
uint32_t channel_len;
uint32_t message_len;
unsigned char bulk_data[8]; /* defined as 8 just for alignment concerns. */
/* We can't reclare bulk_data as bulk_data[] since this structure is
* nested. The 8 bytes are removed from the count during the message
* length computation. */
unsigned char bulk_data[8];
} clusterMsgDataPublish;

typedef struct {
Expand Down

0 comments on commit 669aa2a

Please sign in to comment.