[ovs-dev] [PATCH 2/3] ovsdb-idlc: Fix memory leak reported by Coverity.

Yifeng Sun pkusunyifeng at gmail.com
Sat May 9 18:02:44 UTC 2020


Looks good to me, thanks.

Reviewed-by: Yifeng Sun <pkusunyifeng at gmail.com>


On Sat, May 2, 2020 at 10:29 AM William Tu <u9012063 at gmail.com> wrote:

> An exmplae pattern shown below:
> void
> ovsrec_ct_zone_index_set_external_ids(const struct ovsrec_ct_zone...
> {
> //  1. alloc_fn: Storage is returned from allocation function xmalloc.
> //  2. var_assign: Assigning: datum = storage returned from xmalloc(24UL).
>     struct ovsdb_datum *datum = xmalloc(sizeof(struct ovsdb_datum));
>
> //  3. Condition external_ids, taking false branch.
>     if (external_ids) {
>                 ...
>     } else {
> //      4. noescape: Resource datum is not freed or pointed-to in
> ovsdb_datum_init_empty.
>         ovsdb_datum_init_empty(datum);
>     }
> //      5. noescape: Resource datum is not freed or pointed-to in
> ovsdb_idl_index_write.
>     ovsdb_idl_index_write(CONST_CAST(struct ovsdb_idl_row *,
> &row->header_),
>
> &ovsrec_ct_zone_columns[OVSREC_CT_ZONE_COL_EXTERNAL_IDS],
>                           datum,
>                           &ovsrec_table_classes[OVSREC_TABLE_CT_ZONE]);
>
> // CID 1420856 (#1 of 1): Resource leak (RESOURCE_LEAK)
> // 6. leaked_storage: Variable datum going out of scope leaks the storage
> it
>       points to.
> Fix it by freeing the datum.
>
> Signed-off-by: William Tu <u9012063 at gmail.com>
> ---
>  ovsdb/ovsdb-idlc.in | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
> index 1d385e15c1e5..698fe25f3095 100755
> --- a/ovsdb/ovsdb-idlc.in
> +++ b/ovsdb/ovsdb-idlc.in
> @@ -1306,6 +1306,7 @@ struct %(s)s *
>                            &%(s)s_columns[%(S)s_COL_%(C)s],
>                            datum,
>                            &%(p)stable_classes[%(P)sTABLE_%(T)s]);
> +    free(datum);
>  }
>  """ % {'t': tableName,
>         'p': prefix,
> --
> 2.7.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list