Re: [PATCH] lib/lzo: Avoid output overruns when compressing
From: David Sterba
Date: Wed Feb 26 2025 - 22:16:30 EST
On Thu, Feb 27, 2025 at 09:46:10AM +0800, Herbert Xu wrote:
> On Wed, Feb 26, 2025 at 02:00:37PM +0100, David Sterba wrote:
> >
> > Does it have to check for the overruns? The worst case compression
> > result size is known and can be calculated by the formula. Using big
>
> If the caller is using different algorithms, then yes the checks
> are essential. Otherwise the caller would have to allocate enough
> memory not just for LZO, but for the worst-case compression length
> for *any* algorithm. Adding a single algorithm would have the
> potential of breaking all users.
>
> > What strikes me as alarming that you insert about 20 branches into a
> > realtime compression algorithm, where everything is basically a hot
> > path. Branches that almost never happen, and never if the output buffer
> > is big enough.
>
> OK, if that is a real concern then I will add a _safe version of
> LZO compression alongside the existing code.
Makes sense, thanks. The in-kernel users are OK, but the crypto API also
exports the compression so there's no guarantee it's used correctly. As
it needs changes to the LZO code itself I don't see a better way than to
have 2 versions, conveniently done by the macros as yo did.