Re: [PATCH cairo 2/3] bo: Check null return from _cairo_malloc_ab() (CID #1159556)
Uli Schlachter <[email protected]> Sat, 9 Jun 2018 08:58:29 +0200
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Reviewed-by: Uli Schlachter <[email protected]> (Sigh, that code leaks memory; there is a following call to _cairo_malloc_ab_plus_c() in this function and if that fails, it returns an error without first freeing event_y (after checking if it has to be freed)) On 09.06.2018 07:34, Bryce Harrington wrote: > _cairo_malloc_ab() can return NULL under some circumstances, and all > other callers of this routine in the Cairo codebase check its return, so > do so here as well. > > (I'm not sure that cairo-bentley-ottmann.c is actually plugged in > anywhere for actual use, so this change may be more to quell Coverity > than fix an actual likely bug. However, the bo code has been used as a > starting point when writing compositors so perhaps is a useful thing to > cleanup.) > > Coverity ID: #1159556 > > Signed-off-by: Bryce Harrington <[email protected]> > --- > src/cairo-bentley-ottmann.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/cairo-bentley-ottmann.c b/src/cairo-bentley-ottmann.c > index 91e41f9..afe3a63 100644 > --- a/src/cairo-bentley-ottmann.c > +++ b/src/cairo-bentley-ottmann.c > @@ -1484,10 +1484,13 @@ _cairo_bentley_ottmann_tessellate_polygon (cairo_traps_t *traps, > ymin = _cairo_fixed_integer_floor (polygon->limit.p1.y); > ymax = _cairo_fixed_integer_ceil (polygon->limit.p2.y) - ymin; > > - if (ymax > 64) > + if (ymax > 64) { > event_y = _cairo_malloc_ab(sizeof (cairo_bo_event_t*), ymax); > - else > + if (unlikely (event_y == NULL)) > + return _cairo_error (CAIRO_STATUS_NO_MEMORY); > + } else { > event_y = stack_event_y; > + } > memset (event_y, 0, ymax * sizeof(cairo_bo_event_t *)); > } > > -- Bruce Schneier can read and understand Perl programs. -- cairo mailing list [email protected] https://lists.cairographics.org/mailman/listinfo/cairo