memset(&chap_rec, 0, sizeof(chap_rec));
 
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*param_info)) {
+                       rc = -EINVAL;
+                       goto exit_set_chap;
+               }
+
                param_info = nla_data(attr);
 
                switch (param_info->param) {
        }
 
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*iface_param)) {
+                       rval = -EINVAL;
+                       goto exit_init_fw_cb;
+               }
+
                iface_param = nla_data(attr);
 
                if (iface_param->param_type == ISCSI_NET_PARAM) {
 
        memset((void *)&chap_tbl, 0, sizeof(chap_tbl));
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*fnode_param)) {
+                       rc = -EINVAL;
+                       goto exit_set_param;
+               }
+
                fnode_param = nla_data(attr);
 
                switch (fnode_param->param) {