diff --git a/security/keys/user_defined.c b/security/keys/user_defined.c index 6f88b507f927..6bf3e2da7bda 100644 --- a/security/keys/user_defined.c +++ b/security/keys/user_defined.c @@ -61,7 +61,8 @@ int user_preparse(struct key_preparsed_payload *prep) struct user_key_payload *upayload; size_t datalen = prep->datalen; - if (datalen == 0 || datalen > 32767 || !prep->data) + if (datalen == 0 || datalen > 32767 || datalen < 4 || + !prep->data) return -EINVAL; upayload = kmalloc_flex(*upayload, data, datalen);