[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