|
@@ -1863,6 +1863,12 @@ ip_set_sockfn_get(struct sock *sk, int optval, void __user *user, int *len)
|
|
if (*op < IP_SET_OP_VERSION) {
|
|
if (*op < IP_SET_OP_VERSION) {
|
|
/* Check the version at the beginning of operations */
|
|
/* Check the version at the beginning of operations */
|
|
struct ip_set_req_version *req_version = data;
|
|
struct ip_set_req_version *req_version = data;
|
|
|
|
+
|
|
|
|
+ if (*len < sizeof(struct ip_set_req_version)) {
|
|
|
|
+ ret = -EINVAL;
|
|
|
|
+ goto done;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (req_version->version != IPSET_PROTOCOL) {
|
|
if (req_version->version != IPSET_PROTOCOL) {
|
|
ret = -EPROTO;
|
|
ret = -EPROTO;
|
|
goto done;
|
|
goto done;
|