Unverified Commit d9de5c82 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!11897 [sync] PR-11832: enic: Validate length of nl attributes in enic_set_vf_port

parents 110140c3 a6ff2221
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1117,18 +1117,30 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
	pp->request = nla_get_u8(port[IFLA_PORT_REQUEST]);

	if (port[IFLA_PORT_PROFILE]) {
		if (nla_len(port[IFLA_PORT_PROFILE]) != PORT_PROFILE_MAX) {
			memcpy(pp, &prev_pp, sizeof(*pp));
			return -EINVAL;
		}
		pp->set |= ENIC_SET_NAME;
		memcpy(pp->name, nla_data(port[IFLA_PORT_PROFILE]),
			PORT_PROFILE_MAX);
	}

	if (port[IFLA_PORT_INSTANCE_UUID]) {
		if (nla_len(port[IFLA_PORT_INSTANCE_UUID]) != PORT_UUID_MAX) {
			memcpy(pp, &prev_pp, sizeof(*pp));
			return -EINVAL;
		}
		pp->set |= ENIC_SET_INSTANCE;
		memcpy(pp->instance_uuid,
			nla_data(port[IFLA_PORT_INSTANCE_UUID]), PORT_UUID_MAX);
	}

	if (port[IFLA_PORT_HOST_UUID]) {
		if (nla_len(port[IFLA_PORT_HOST_UUID]) != PORT_UUID_MAX) {
			memcpy(pp, &prev_pp, sizeof(*pp));
			return -EINVAL;
		}
		pp->set |= ENIC_SET_HOST;
		memcpy(pp->host_uuid,
			nla_data(port[IFLA_PORT_HOST_UUID]), PORT_UUID_MAX);