Message ID | 018c75fd44fa1b1462a49f5bf700b9194d9c6341.1694118524.git.vivien@planete-kraus.eu |
---|---|
State | New |
Headers | show |
Series | [bug#65798,gnome-team,v2] Cogl: fix double free | expand |
Am Donnerstag, dem 07.09.2023 um 07:36 +0200 schrieb Vivien Kraus: > * gnu/local.mk (dist_patch_DATA): Add cogl-fix-double-free.patch. > * gnu/packages/gnome.scm (cogl): Apply cogl-fix-double-free.patch. > * gnu/packages/patches/cogl-fix-double-free.patch: Avoid freeing the > dispaly used by a cogl context twice. display Usually you do (patch, register, use) in this order, but I can rewrite the ChangeLog for you easily :) > Since the cogl repository is > read-only, this patch won’t be applied upstream. This information is not necessary in the ChangeLog. You could mention it before that, but I think keeping it in the patch itself is a better idea. > --- > gnu/local.mk | 1 + > gnu/packages/gnome.scm | 4 ++- > .../patches/cogl-fix-double-free.patch | 31 > +++++++++++++++++++ > 3 files changed, 35 insertions(+), 1 deletion(-) > create mode 100644 gnu/packages/patches/cogl-fix-double-free.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index 24fa8117c6..ae36dd49c9 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -1024,6 +1024,7 @@ dist_patch_DATA > = \ > %D%/packages/patches/clucene-pkgconfig.patch \ > %D%/packages/patches/cmake-curl-certificates-3.24.patch \ > %D%/packages/patches/coda-use-system-libs.patch \ > + %D%/packages/patches/cogl-fix-double-free.patch \ > %D%/packages/patches/collectd-5.11.0- > noinstallvar.patch \ > %D%/packages/patches/combinatorial-blas-awpm.patch \ > %D%/packages/patches/combinatorial-blas-io-fix.patch \ > diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm > index 922d6ba24b..6b824c2832 100644 > --- a/gnu/packages/gnome.scm > +++ b/gnu/packages/gnome.scm > @@ -6131,7 +6131,9 @@ (define-public cogl > (version-major+minor version) "/" > "cogl-" version ".tar.xz")) > (sha256 > - (base32 > "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8")))) > + (base32 > "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8")) > + (patches > + (search-patches "cogl-fix-double-free.patch")))) > ;; NOTE: mutter exports a bundled fork of cogl, so when making > changes to > ;; cogl, corresponding changes may be appropriate in mutter as > well. This comment no longer applies to current mutter, for it has diverged far enough. > (build-system gnu-build-system) > diff --git a/gnu/packages/patches/cogl-fix-double-free.patch > b/gnu/packages/patches/cogl-fix-double-free.patch > new file mode 100644 > index 0000000000..7094c4cf02 > --- /dev/null > +++ b/gnu/packages/patches/cogl-fix-double-free.patch > @@ -0,0 +1,31 @@ > +From 38d3fda8849ac327b473ac11dfac5499f595b7ac Mon Sep 17 00:00:00 > 2001 > +Message-ID: > <38d3fda8849ac327b473ac11dfac5499f595b7ac.1694118000.git.vivien@plane > te-kraus.eu> > +In-Reply-To: <cover.1694118000.git.vivien@planete-kraus.eu> > +References: <cover.1694118000.git.vivien@planete-kraus.eu> > +From: Vivien Kraus <vivien@planete-kraus.eu> > +Date: Thu, 7 Sep 2023 22:16:48 +0200 > +Subject: [PATCH 1/1] Prevent double free on context objects > + > +The display is unrefed in the context destructor, but not refed in > the > +constructor. > + > +This targets an archived (read-only) repository. > +--- > + cogl/cogl-context.c | 1 + > + 1 file changed, 1 insertion(+) > + > +diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c > +index a7eed29a..22809424 100644 > +--- a/cogl/cogl-context.c > ++++ b/cogl/cogl-context.c > +@@ -219,6 +219,7 @@ cogl_context_new (CoglDisplay *display, > + } > + > + context->display = display; > ++ cogl_object_ref (display); You can use context->display = cogl_object_ref (display) if it works like g_object_ref. > + > + /* This is duplicated data, but it's much more convenient to have > + the driver attached to the context and the value is accessed a > +-- > +2.41.0 > + > > base-commit: baf5b0745446dabe8166d860996dc54cfa09db3e Will see what CI has to say, otherwise LGTM. Cheers
diff --git a/gnu/local.mk b/gnu/local.mk index 24fa8117c6..ae36dd49c9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1024,6 +1024,7 @@ dist_patch_DATA = \ %D%/packages/patches/clucene-pkgconfig.patch \ %D%/packages/patches/cmake-curl-certificates-3.24.patch \ %D%/packages/patches/coda-use-system-libs.patch \ + %D%/packages/patches/cogl-fix-double-free.patch \ %D%/packages/patches/collectd-5.11.0-noinstallvar.patch \ %D%/packages/patches/combinatorial-blas-awpm.patch \ %D%/packages/patches/combinatorial-blas-io-fix.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 922d6ba24b..6b824c2832 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6131,7 +6131,9 @@ (define-public cogl (version-major+minor version) "/" "cogl-" version ".tar.xz")) (sha256 - (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8")))) + (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8")) + (patches + (search-patches "cogl-fix-double-free.patch")))) ;; NOTE: mutter exports a bundled fork of cogl, so when making changes to ;; cogl, corresponding changes may be appropriate in mutter as well. (build-system gnu-build-system) diff --git a/gnu/packages/patches/cogl-fix-double-free.patch b/gnu/packages/patches/cogl-fix-double-free.patch new file mode 100644 index 0000000000..7094c4cf02 --- /dev/null +++ b/gnu/packages/patches/cogl-fix-double-free.patch @@ -0,0 +1,31 @@ +From 38d3fda8849ac327b473ac11dfac5499f595b7ac Mon Sep 17 00:00:00 2001 +Message-ID: <38d3fda8849ac327b473ac11dfac5499f595b7ac.1694118000.git.vivien@planete-kraus.eu> +In-Reply-To: <cover.1694118000.git.vivien@planete-kraus.eu> +References: <cover.1694118000.git.vivien@planete-kraus.eu> +From: Vivien Kraus <vivien@planete-kraus.eu> +Date: Thu, 7 Sep 2023 22:16:48 +0200 +Subject: [PATCH 1/1] Prevent double free on context objects + +The display is unrefed in the context destructor, but not refed in the +constructor. + +This targets an archived (read-only) repository. +--- + cogl/cogl-context.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c +index a7eed29a..22809424 100644 +--- a/cogl/cogl-context.c ++++ b/cogl/cogl-context.c +@@ -219,6 +219,7 @@ cogl_context_new (CoglDisplay *display, + } + + context->display = display; ++ cogl_object_ref (display); + + /* This is duplicated data, but it's much more convenient to have + the driver attached to the context and the value is accessed a +-- +2.41.0 +