Messages in this thread | | | Date | Mon, 24 Jul 2023 09:19:14 +0800 (GMT+08:00) | From | "Lin Ma" <> | Subject | Re: [PATCH v1] net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64 |
| |
Hello Victor,
> > Shouldn't the check be nla_len(attr) != sizeof(u64)? > An attribute with a bigger length also seems to be invalid. > > You could also separate this check into another if statement, > so that the error message is clearer in regards to why the attr is > invalid. Something like: > > if (nla_len(attr) != sizeof(u64)) { > NL_SET_ERR_MSG_ATTR_FMT(extack, attr, > "Attribute length expected to be %lu", > sizeof(u64)); > return -EINVAL; > } > > > NL_SET_ERR_MSG_ATTR(extack, attr, > > "Attribute type expected to be TCA_MQPRIO_MIN_RATE64"); > > return -EINVAL; > > @@ -307,7 +308,8 @@ static int mqprio_parse_nlattr(struct Qdisc *sch, struct tc_mqprio_qopt *qopt, > > i = 0; > > nla_for_each_nested(attr, tb[TCA_MQPRIO_MAX_RATE64], > > rem) { > > - if (nla_type(attr) != TCA_MQPRIO_MAX_RATE64) { > > + if (nla_type(attr) != TCA_MQPRIO_MAX_RATE64 || > > + nla_len(attr) < sizeof(u64)) { > > Same as the previous comment. > > > NL_SET_ERR_MSG_ATTR(extack, attr, > > "Attribute type expected to be TCA_MQPRIO_MAX_RATE64"); > > return -EINVAL; > > cheers, > Victor
Yeah, I use < instead of != for a looser check. I agree with you the "!=" condition and the separation suggestion. I will prepare the v2 ASAP.
Thanks Lin
| |