bus/fslmc: fix for resource leak coverity issue
Checks
Commit Message
From: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
1 issue caught by 344967
Leaked_storage: Variable sep going out of scope leaks the
storage it points to.
When 'sep' is not null and sep_exist is 0, 'sep' is freed
before going out of scope of the function irrespective of
'addr' exists or not.
Coverity Issue: 344967
Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
---
drivers/bus/fslmc/fslmc_bus.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Babu Radhakrishnan, AgalyaX
> Sent: Tuesday, September 10, 2019 1:01 PM
> To: dev@dpdk.org
> Cc: Pattan, Reshma <reshma.pattan@intel.com>;
> hemant.agrawal@nxp.com; sachin.saxena@nxp.com; Parthasarathy,
> JananeeX M <jananeex.m.parthasarathy@intel.com>; Babu Radhakrishnan,
> AgalyaX <agalyax.babu.radhakrishnan@intel.com>; stable@dpdk.org
> Subject: [PATCH] bus/fslmc: fix for resource leak coverity issue
>
> From: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
>
> 1 issue caught by 344967
> Leaked_storage: Variable sep going out of scope leaks the storage it points
> to.
>
> When 'sep' is not null and sep_exist is 0, 'sep' is freed before going out of
> scope of the function irrespective of 'addr' exists or not.
>
> Coverity Issue: 344967
> Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> Cc: stable@dpdk.org
>
> Signed-off-by: Agalya Babu RadhaKrishnan
> <agalyax.babu.radhakrishnan@intel.com>
> ---
if (strncmp("dpni", sep, 4) &&
strncmp("dpseci", sep, 6) &&
strncmp("dpcon", sep, 5) &
.....
We think validation of device name is done using AND operator instead it should be done by OR operator.
Please confirm.
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
regards,
Sachin Saxena
> -----Original Message-----
> From: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
> Sent: Tuesday, September 10, 2019 1:01 PM
> To: dev@dpdk.org
> Cc: reshma.pattan@intel.com; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> jananeex.m.parthasarathy@intel.com; Agalya Babu RadhaKrishnan
> <agalyax.babu.radhakrishnan@intel.com>; stable@dpdk.org
> Subject: [PATCH] bus/fslmc: fix for resource leak coverity issue
> Importance: High
>
> From: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
>
> 1 issue caught by 344967
> Leaked_storage: Variable sep going out of scope leaks the storage it points
> to.
>
> When 'sep' is not null and sep_exist is 0, 'sep' is freed before going out of
> scope of the function irrespective of 'addr' exists or not.
>
> Coverity Issue: 344967
> Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> Cc: stable@dpdk.org
>
> Signed-off-by: Agalya Babu RadhaKrishnan
> <agalyax.babu.radhakrishnan@intel.com>
> ---
> drivers/bus/fslmc/fslmc_bus.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
> index a2f482516..60c34098c 100644
> --- a/drivers/bus/fslmc/fslmc_bus.c
> +++ b/drivers/bus/fslmc/fslmc_bus.c
> @@ -291,10 +291,13 @@ rte_fslmc_parse(const char *name, void *addr)
> goto err_out;
> }
>
> - if (addr)
> + if (addr) {
> strcpy(addr, sep);
> + if (!sep_exists && sep)
> + free(sep);
> + return 0;
> + }
>
> - return 0;
> err_out:
> if (!sep_exists && sep)
> free(sep);
> --
> 2.14.1
> -----Original Message-----
> From: Babu Radhakrishnan, AgalyaX
> <agalyax.babu.radhakrishnan@intel.com>
> Sent: Tuesday, September 10, 2019 1:11 PM
> To: dev@dpdk.org
> Cc: Pattan, Reshma <reshma.pattan@intel.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> Parthasarathy, JananeeX M <jananeex.m.parthasarathy@intel.com>;
> stable@dpdk.org
> Subject: RE: [PATCH] bus/fslmc: fix for resource leak coverity issue
> Importance: High
>
> Hi,
>
> > -----Original Message-----
> > From: Babu Radhakrishnan, AgalyaX
> > Sent: Tuesday, September 10, 2019 1:01 PM
> > To: dev@dpdk.org
> > Cc: Pattan, Reshma <reshma.pattan@intel.com>;
> hemant.agrawal@nxp.com;
> > sachin.saxena@nxp.com; Parthasarathy, JananeeX M
> > <jananeex.m.parthasarathy@intel.com>; Babu Radhakrishnan, AgalyaX
> > <agalyax.babu.radhakrishnan@intel.com>; stable@dpdk.org
> > Subject: [PATCH] bus/fslmc: fix for resource leak coverity issue
> >
> > From: Agalya Babu RadhaKrishnan
> <agalyax.babu.radhakrishnan@intel.com>
> >
> > 1 issue caught by 344967
> > Leaked_storage: Variable sep going out of scope leaks the storage it
> > points to.
> >
> > When 'sep' is not null and sep_exist is 0, 'sep' is freed before going
> > out of scope of the function irrespective of 'addr' exists or not.
> >
> > Coverity Issue: 344967
> > Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Agalya Babu RadhaKrishnan
> > <agalyax.babu.radhakrishnan@intel.com>
> > ---
>
> if (strncmp("dpni", sep, 4) &&
> strncmp("dpseci", sep, 6) &&
> strncmp("dpcon", sep, 5) &
> .....
>
> We think validation of device name is done using AND operator instead it
> should be done by OR operator.
> Please confirm
[Sachin Saxena] The purpose of this logic to confirm that one of the device name should match to supported list and as soon as one strncmp() matches the string it will return 0 and the control comes out of IF condition.
So, existing logic is correct.
On Thu, Oct 3, 2019 at 10:43 AM Sachin Saxena <sachin.saxena@nxp.com> wrote:
>
>
> > -----Original Message-----
> > From: Babu Radhakrishnan, AgalyaX
> > <agalyax.babu.radhakrishnan@intel.com>
> > Sent: Tuesday, September 10, 2019 1:11 PM
> > To: dev@dpdk.org
> > Cc: Pattan, Reshma <reshma.pattan@intel.com>; Hemant Agrawal
> > <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> > Parthasarathy, JananeeX M <jananeex.m.parthasarathy@intel.com>;
> > stable@dpdk.org
> > Subject: RE: [PATCH] bus/fslmc: fix for resource leak coverity issue
> > Importance: High
> >
> > Hi,
> >
> > > -----Original Message-----
> > > From: Babu Radhakrishnan, AgalyaX
> > > Sent: Tuesday, September 10, 2019 1:01 PM
> > > To: dev@dpdk.org
> > > Cc: Pattan, Reshma <reshma.pattan@intel.com>;
> > hemant.agrawal@nxp.com;
> > > sachin.saxena@nxp.com; Parthasarathy, JananeeX M
> > > <jananeex.m.parthasarathy@intel.com>; Babu Radhakrishnan, AgalyaX
> > > <agalyax.babu.radhakrishnan@intel.com>; stable@dpdk.org
> > > Subject: [PATCH] bus/fslmc: fix for resource leak coverity issue
> > >
> > > From: Agalya Babu RadhaKrishnan
> > <agalyax.babu.radhakrishnan@intel.com>
> > >
> > > 1 issue caught by 344967
> > > Leaked_storage: Variable sep going out of scope leaks the storage it
> > > points to.
> > >
> > > When 'sep' is not null and sep_exist is 0, 'sep' is freed before going
> > > out of scope of the function irrespective of 'addr' exists or not.
> > >
> > > Coverity Issue: 344967
> > > Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Agalya Babu RadhaKrishnan
> > > <agalyax.babu.radhakrishnan@intel.com>
> > > ---
> >
> > if (strncmp("dpni", sep, 4) &&
> > strncmp("dpseci", sep, 6) &&
> > strncmp("dpcon", sep, 5) &
> > .....
> >
> > We think validation of device name is done using AND operator instead it
> > should be done by OR operator.
> > Please confirm
> [Sachin Saxena] The purpose of this logic to confirm that one of the device name should match to supported list and as soon as one strncmp() matches the string it will return 0 and the control comes out of IF condition.
> So, existing logic is correct.
>
Should I understand this as a confirmation of the initial ACK?
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Friday, October 25, 2019 12:47 AM
> To: Sachin Saxena <sachin.saxena@nxp.com>
> Cc: Babu Radhakrishnan, AgalyaX <agalyax.babu.radhakrishnan@intel.com>;
> dev@dpdk.org; Pattan, Reshma <reshma.pattan@intel.com>; Hemant
> Agrawal <hemant.agrawal@nxp.com>; Parthasarathy, JananeeX M
> <jananeex.m.parthasarathy@intel.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] bus/fslmc: fix for resource leak coverity issue
>
> On Thu, Oct 3, 2019 at 10:43 AM Sachin Saxena <sachin.saxena@nxp.com>
> wrote:
> >
> >
> > > -----Original Message-----
> > > From: Babu Radhakrishnan, AgalyaX
> > > <agalyax.babu.radhakrishnan@intel.com>
> > > Sent: Tuesday, September 10, 2019 1:11 PM
> > > To: dev@dpdk.org
> > > Cc: Pattan, Reshma <reshma.pattan@intel.com>; Hemant Agrawal
> > > <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> > > Parthasarathy, JananeeX M <jananeex.m.parthasarathy@intel.com>;
> > > stable@dpdk.org
> > > Subject: RE: [PATCH] bus/fslmc: fix for resource leak coverity issue
> > > Importance: High
> > >
> > > Hi,
> > >
> > > > -----Original Message-----
> > > > From: Babu Radhakrishnan, AgalyaX
> > > > Sent: Tuesday, September 10, 2019 1:01 PM
> > > > To: dev@dpdk.org
> > > > Cc: Pattan, Reshma <reshma.pattan@intel.com>;
> > > hemant.agrawal@nxp.com;
> > > > sachin.saxena@nxp.com; Parthasarathy, JananeeX M
> > > > <jananeex.m.parthasarathy@intel.com>; Babu Radhakrishnan, AgalyaX
> > > > <agalyax.babu.radhakrishnan@intel.com>; stable@dpdk.org
> > > > Subject: [PATCH] bus/fslmc: fix for resource leak coverity issue
> > > >
> > > > From: Agalya Babu RadhaKrishnan
> > > <agalyax.babu.radhakrishnan@intel.com>
> > > >
> > > > 1 issue caught by 344967
> > > > Leaked_storage: Variable sep going out of scope leaks the storage
> > > > it points to.
> > > >
> > > > When 'sep' is not null and sep_exist is 0, 'sep' is freed before
> > > > going out of scope of the function irrespective of 'addr' exists or not.
> > > >
> > > > Coverity Issue: 344967
> > > > Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Agalya Babu RadhaKrishnan
> > > > <agalyax.babu.radhakrishnan@intel.com>
> > > > ---
> > >
> > > if (strncmp("dpni", sep, 4) &&
> > > strncmp("dpseci", sep, 6) &&
> > > strncmp("dpcon", sep, 5) &
> > > .....
> > >
> > > We think validation of device name is done using AND operator
> > > instead it should be done by OR operator.
> > > Please confirm
> > [Sachin Saxena] The purpose of this logic to confirm that one of the device
> name should match to supported list and as soon as one strncmp() matches
> the string it will return 0 and the control comes out of IF condition.
> > So, existing logic is correct.
> >
>
> Should I understand this as a confirmation of the initial ACK?
>
[Sachin Saxena] Yes. please consider it as ACK. Thank you.
>
> --
> David Marchand
On Tue, Sep 10, 2019 at 9:33 AM Agalya Babu RadhaKrishnan
<agalyax.babu.radhakrishnan@intel.com> wrote:
>
> From: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
>
> 1 issue caught by 344967
> Leaked_storage: Variable sep going out of scope leaks the
> storage it points to.
>
> When 'sep' is not null and sep_exist is 0, 'sep' is freed
> before going out of scope of the function irrespective of
> 'addr' exists or not.
>
> Coverity Issue: 344967
s/Issue/issue/ according to the contributing guide.
> Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> Cc: stable@dpdk.org
>
> Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
Applied, thanks.
--
David Marchand
@@ -291,10 +291,13 @@ rte_fslmc_parse(const char *name, void *addr)
goto err_out;
}
- if (addr)
+ if (addr) {
strcpy(addr, sep);
+ if (!sep_exists && sep)
+ free(sep);
+ return 0;
+ }
- return 0;
err_out:
if (!sep_exists && sep)
free(sep);