On Mon, Jun 12, 2017 at 09:29:31PM -0700, David Carrillo-Cisneros wrote:

SNIP

> +
> +     for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) {
> +             if (!feat_ops[feat].synthesize) {
> +                     pr_debug("No record header feature for header :%d\n", 
> feat);
> +                     continue;
> +             }
> +
> +             ff.offset = sizeof(*fe);
> +
> +             ret = feat_ops[feat].write(&ff, evlist);
> +             if (ret || ff.offset <= (ssize_t)sizeof(*fe)) {
> +                     pr_debug("Error writing feature\n");
> +                     continue;
> +             }
> +
> +             /* ff.buf may have changed due to realloc in do_write() */
> +             fe = ff.buf;
> +             memset(fe, 0, sizeof(*fe));
> +
> +             fe->feat_id = feat;
> +             fe->header.type = PERF_RECORD_HEADER_FEATURE;
> +             fe->header.size = ff.offset;
> +
> +             ret = process(tool, ff.buf, NULL, NULL);
> +             if (ret)

leaking ff.buf

jirka

> +                     return ret;
> +     }
> +     free(ff.buf);
> +     return 0;
> +}
> +

Reply via email to