Message ID | 20240930-packing-kunit-tests-and-split-pack-unpack-v1-1-94b1f04aca85@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | packing: various improvements and KUnit tests | expand |
On Mon, Sep 30, 2024 at 04:19:34PM -0700, Jacob Keller wrote: > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > While reworking the implementation, it became apparent that this check > does not exist. > > There is no functional issue yet, because at call sites, "startbit" and > "endbit" are always hardcoded to correct values, and never come from the > user. > > Even with the upcoming support of arbitrary buffer lengths, the > "startbit >= 8 * pbuflen" check will remain correct. This is because > we intend to always interpret the packed buffer in a way that avoids > discontinuities in the available bit indices. > > Fixes: 554aae35007e ("lib: Add support for generic packing operations") > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> > Tested-by: Jacob Keller <jacob.e.keller@intel.com> > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > --- I thought that Fixes: tags are not in order for patches which are not intended to be backported, and that is also clear from the commit message?
On 10/2/2024 6:44 AM, Vladimir Oltean wrote: > On Mon, Sep 30, 2024 at 04:19:34PM -0700, Jacob Keller wrote: >> From: Vladimir Oltean <vladimir.oltean@nxp.com> >> >> While reworking the implementation, it became apparent that this check >> does not exist. >> >> There is no functional issue yet, because at call sites, "startbit" and >> "endbit" are always hardcoded to correct values, and never come from the >> user. >> >> Even with the upcoming support of arbitrary buffer lengths, the >> "startbit >= 8 * pbuflen" check will remain correct. This is because >> we intend to always interpret the packed buffer in a way that avoids >> discontinuities in the available bit indices. >> >> Fixes: 554aae35007e ("lib: Add support for generic packing operations") >> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> >> Tested-by: Jacob Keller <jacob.e.keller@intel.com> >> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> >> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> >> --- > > I thought that Fixes: tags are not in order for patches which are not > intended to be backported, and that is also clear from the commit message? Ah, yea. I had intended to drop those, but forgot. Thanks, Jake
diff --git a/lib/packing.c b/lib/packing.c index 3f656167c17e..439125286d2b 100644 --- a/lib/packing.c +++ b/lib/packing.c @@ -86,8 +86,10 @@ int packing(void *pbuf, u64 *uval, int startbit, int endbit, size_t pbuflen, */ int plogical_first_u8, plogical_last_u8, box; - /* startbit is expected to be larger than endbit */ - if (startbit < endbit) + /* startbit is expected to be larger than endbit, and both are + * expected to be within the logically addressable range of the buffer. + */ + if (unlikely(startbit < endbit || startbit >= 8 * pbuflen || endbit < 0)) /* Invalid function call */ return -EINVAL;