Sam James <s...@gentoo.org> writes:

> Some users reported a crash downstream in Gentoo with 
> g_type_check_is_value_type
> getting a garbage type. This turns out to be because
> 95e07080a2a08196cafb05b69345ea1d629424b1 replaced the types (and argument
> counts) incorrectly.
>
> Fix that by adding to gpa_marshal.list to create custom marshal types
> and use those instead, and fix the argument count.
>
> Bug: https://bugs.gentoo.org/957196
> Fixes: 95e07080a2a08196cafb05b69345ea1d629424b1
> Signed-off-by: Sam James <s...@gentoo.org>
> ---
> Note that I've sent a DCO before in August 2022 but I don't spot it in
> the archives at a glance, so sent it again just now.
>

+cc Andreas, sorry I forgot earlier.

>  src/gpa-marshal.list | 2 ++
>  src/gpacontext.c     | 5 +++--
>  src/gpakeyexpireop.c | 3 ++-
>  3 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/gpa-marshal.list b/src/gpa-marshal.list
> index 081ce17..941257d 100644
> --- a/src/gpa-marshal.list
> +++ b/src/gpa-marshal.list
> @@ -1 +1,3 @@
>  INT:STRING,STRING
> +VOID:INT,INT
> +VOID:POINTER,POINTER
> diff --git a/src/gpacontext.c b/src/gpacontext.c
> index 91bd85f..31301c0 100644
> --- a/src/gpacontext.c
> +++ b/src/gpacontext.c
> @@ -25,6 +25,7 @@
>  #include "gpa.h"
>  #include "gpgmetools.h"
>  #include "gpacontext.h"
> +#include "gpa-marshal.h"
>  
>  /* GObject type functions */
>  
> @@ -145,9 +146,9 @@ gpa_context_class_init (GpaContextClass *klass)
>                          G_SIGNAL_RUN_FIRST,
>                          G_STRUCT_OFFSET (GpaContextClass, progress),
>                          NULL, NULL,
> -                        g_cclosure_marshal_VOID__INT,
> +                        gpa_marshal_VOID__INT_INT,
>                          G_TYPE_NONE, 2,
> -                     G_TYPE_INT);
> +                     G_TYPE_INT, G_TYPE_INT);
>  }
>  
>  static void
> diff --git a/src/gpakeyexpireop.c b/src/gpakeyexpireop.c
> index a489087..25e489e 100644
> --- a/src/gpakeyexpireop.c
> +++ b/src/gpakeyexpireop.c
> @@ -31,6 +31,7 @@
>  #endif
>  
>  #include "gpa.h"
> +#include "gpa-marshal.h"
>  #include "gpakeyexpireop.h"
>  #include "expirydlg.h"
>  #include "gpgmeedit.h"
> @@ -114,7 +115,7 @@ gpa_key_expire_operation_class_init 
> (GpaKeyExpireOperationClass *klass)
>                 G_SIGNAL_RUN_FIRST,
>                 G_STRUCT_OFFSET (GpaKeyExpireOperationClass, new_expiration),
>                 NULL, NULL,
> -               g_cclosure_marshal_VOID__POINTER,
> +               gpa_marshal_VOID__POINTER_POINTER,
>                 G_TYPE_NONE, 2,
>                 G_TYPE_POINTER,
>                 G_TYPE_POINTER);

_______________________________________________
Gnupg-devel mailing list
Gnupg-devel@gnupg.org
https://lists.gnupg.org/mailman/listinfo/gnupg-devel

Reply via email to