Re: Re: [PATCH v4] net: 9p: avoid freeing uninit memory in p9pdu_vreadf

From: Fedor Pchelkin
Date: Sun Jan 07 2024 - 04:48:33 EST


On 24/01/07 10:56AM, Vitaly Chikunov wrote:
> Dominique,
>
> On Tue, Dec 12, 2023 at 08:21:30AM +0900, Dominique Martinet wrote:
> > Christian Schoenebeck wrote on Thu, Dec 07, 2023 at 01:54:02PM +0100:
> > > I just checked whether this could create a leak, but it looks clean, so LGTM:
> >
> > Right, either version look good to me.
>
> Also, there was unnoticed bug in v2[1] - `int i` is moved to outer block
> and `i` counld be used uninitialized inside of `if (errcode) {`.

Could you elaborate, please? As I can see, `i` could be used
uninitialized in `if (errcode) {` only when `*wnames` is not NULL. But
when `*wnames` is not NULL, then `i` is initialized in the `for` loop. It
is a bit tricky and not obvious from the first glance (and not the best
decision after all), so with Christian's advice the patch was rewritten
to v4 which was eventually accepted.

The bug you've noticed exists in v1 of the patch, not v2.

> Thanks,
>
> [1] https://lore.kernel.org/all/20231205091952.24754-1-pchelkin@xxxxxxxxx/