[lvm-devel] [PATCH RFC] clvmd: verify messages before processing
Christine Caulfield
ccaulfie at redhat.com
Wed Jul 31 08:33:23 UTC 2013
On 30/07/13 20:46, David Teigland wrote:
> Does this look like it would be useful? More checks can be
> added over time, but are there any that would be obvious to
> add now? I'm mainly trying to catch non-message data, and
> not risk rejecting any proper messages.
>
Mostly an ACK but see comment below:
> @@ -2189,10 +2286,22 @@ error:
> void process_message(struct local_client *client, char *buf, int len,
> const char *csid)
> {
> + char nodename[max_cluster_member_name_len];
> struct clvm_header *inheader;
> + int rv;
>
> inheader = (struct clvm_header *) buf;
> ntoh_clvm(inheader); /* Byteswap fields */
> +
> + rv = verify_message(buf, len);
> + if (rv < 0) {
> + memset(nodename, 0, sizeof(nodename));
> + clops->name_from_csid(csid, nodename);
> + log_error("process_message from %s len %d bad verify\n", nodename, len);
> + dump_message(buf, len);
Here you will probably have to return an error to the calling clvmd or
you will get delays when the caller times out. If that happens then the
'timed-out' message is less than helpful
> + return;
> + }
> +
> if (inheader->cmd == CLVMD_CMD_REPLY)
> process_reply(inheader, len, csid);
> else
>
Chrissie
More information about the lvm-devel
mailing list