On Fri, May 01, 2020 at 11:24:23PM +0100, Stuart Henderson wrote: > On 2020/05/01 23:53, Jeremie Courreges-Anglas wrote: > > The ticket has been moved to > > > > https://gitlab.gnome.org/GNOME/gtk/-/issues/2684 > > > > so the comment in the patch ought to be updated. > > > > As mentioned by Jacqueline Jolicoeur, the crash happens very often when > > running gimp with MALLOC_OPTIONS=S. With this fix in place I could not > > reproduce a crash with repeated C-o cycles. > > > > Rationale and code changes LGTM. ok jca@ > > Committed upstream so I've added the full comment. ok Antoine?
Sure, thanks folks. > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/x11/gtk+2/Makefile,v > retrieving revision 1.233 > diff -u -p -r1.233 Makefile > --- Makefile 10 Nov 2019 21:44:07 -0000 1.233 > +++ Makefile 1 May 2020 22:23:27 -0000 > @@ -9,7 +9,7 @@ GNOME_PROJECT= gtk+ > PKGNAME-main= gtk+2-${GNOME_VERSION} > PKGNAME-cups= gtk+2-cups-${GNOME_VERSION} > > -REVISION-main= 8 > +REVISION-main= 9 > REVISION-cups= 4 > > CATEGORIES= x11 devel > Index: patches/patch-modules_engines_pixbuf_pixbuf-render_c > =================================================================== > RCS file: patches/patch-modules_engines_pixbuf_pixbuf-render_c > diff -N patches/patch-modules_engines_pixbuf_pixbuf-render_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-modules_engines_pixbuf_pixbuf-render_c 1 May 2020 > 22:23:27 -0000 > @@ -0,0 +1,26 @@ > +$OpenBSD$ > + > +From d1b21ff1598cfab03e6b918edd76de766356566c Mon Sep 17 00:00:00 2001 > +From: Nam Nguyen <n...@berkeley.edu> > +Date: Fri, 1 May 2020 21:55:49 +0000 > +Subject: [PATCH] Resolve GIMP segfault from accessing memory past end of > + pixbuf Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/2684 > + > +GIMP segfaults while switching themes between dark and gray and inputting > Ctrl-O > +to open a file. This is because p advances past end of pixbuf in > pixbuf-render.c > +compute_hint() with num_channels = 3 (no alpha). This is resolved by fixing > the > +if statement to only check for alpha, thereby advancing p, if there is an > alpha > +channel. > + > +Index: modules/engines/pixbuf/pixbuf-render.c > +--- modules/engines/pixbuf/pixbuf-render.c.orig > ++++ modules/engines/pixbuf/pixbuf-render.c > +@@ -603,7 +603,7 @@ compute_hint (GdkPixbuf *pixbuf, > + if (r != *(p++) || > + g != *(p++) || > + b != *(p++) || > +- (n_channels != 4 && a != *(p++))) > ++ (n_channels == 4 && a != *(p++))) > + { > + hints &= ~THEME_CONSTANT_ROWS; > + if (!(hints & THEME_MISSING)) > -- Antoine