mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
Limit max size of clvmd message
This could be seen as some sort of simple validation - it's not easy to recognize a valid message for now - but we definitely do not want to allocate a lot of megabytes in clvmd memory locked daemon when broken message gets in. Size of 8000 is just selected for now - possibly there could be much lower value put in.
This commit is contained in:
parent
9ef8d6617e
commit
da0f745cb6
@ -1,5 +1,6 @@
|
||||
Version 2.02.94 -
|
||||
====================================
|
||||
Limit the max size of processed clvmd message to ~8KB.
|
||||
Do not send uninitilised bytes in cluster error reply messages.
|
||||
Use unsigned type for bitmask instead of enum type for lvm properties.
|
||||
Add missing cleanup of excl_uuid hash on some exit paths of clvmd.
|
||||
|
@ -49,6 +49,7 @@
|
||||
#endif
|
||||
|
||||
#define MAX_RETRIES 4
|
||||
#define MAX_MISSING_LEN = 8000 /* Max supported clvmd message size ? */
|
||||
|
||||
#define ISLOCAL_CSID(c) (memcmp(c, our_csid, max_csid_len) == 0)
|
||||
|
||||
@ -1204,7 +1205,8 @@ static int read_from_local_sock(struct local_client *thisfd)
|
||||
missing_len = 0;
|
||||
|
||||
/* We need at least sizeof(struct clvm_header) bytes in buffer */
|
||||
if (len < sizeof(struct clvm_header) || argslen < 0) {
|
||||
if (len < sizeof(struct clvm_header) || argslen < 0 ||
|
||||
missing_len > MAX_MISSING_LEN) {
|
||||
struct clvm_header reply = {
|
||||
.cmd = CLVMD_CMD_REPLY,
|
||||
.status = EINVAL
|
||||
|
Loading…
Reference in New Issue
Block a user