Bring a couple fixes from upstream:

- fix certificate list parsing with trailing comments
- never unload libgobject (fixes a segfault under some circumstances)
This commit is contained in:
ajacoutot 2014-04-10 07:29:06 +00:00
parent b1147e9607
commit 4a33d78e5a
4 changed files with 117 additions and 2 deletions

View File

@ -1,11 +1,11 @@
# $OpenBSD: Makefile,v 1.229 2014/04/10 05:43:26 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.230 2014/04/10 07:29:06 ajacoutot Exp $
COMMENT= general-purpose utility library
GNOME_PROJECT= glib
GNOME_VERSION= 2.40.0
PKGNAME= ${DISTNAME:S/glib/glib2/}
REVISION= 2
REVISION= 3
CATEGORIES= devel
@ -51,6 +51,10 @@ CONFIGURE_ARGS= --enable-static \
PATCH_LIST= patch-* gcc3-*
.endif
# XXX rm at next release; patch-configure_ac, patch-gobject_Makefile_in
CONFIGURE_STYLE= autoconf
AUTOCONF_VERSION= 2.69
pre-configure:
perl -pi -e "s,/usr/local,${LOCALBASE},g;" \
-e "s,/etc/xdg,${SYSCONFDIR}/xdg,g" \

View File

@ -0,0 +1,50 @@
$OpenBSD: patch-configure_ac,v 1.10 2014/04/10 07:29:06 ajacoutot Exp $
From 3662eb9759fe225d1c214db6927c667a1b733e8a Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Mon, 2 Sep 2013 13:59:18 -0400
Subject: gobject: try to link with -Wl,-z,nodelete
--- configure.ac.orig Mon Mar 24 19:53:31 2014
+++ configure.ac Thu Apr 10 09:10:14 2014
@@ -3465,6 +3465,40 @@ fi
AC_SUBST(GLIB_LINK_FLAGS)
dnl
+dnl Check for -z,nodelete linker flag: the type system assumes that
+dnl libgobject stays loaded for the lifetime of the process.
+dnl Since ld.bfd does not treat wrong -z options as fatal by default,
+dnl we also try to check for the --fatal-warnings linker flag if
+dnl auto-detecting.
+dnl
+
+AC_ARG_ENABLE([znodelete],
+ [AS_HELP_STRING([--disable-znodelete],
+ [avoid linking with -z,nodelete])],,
+ [SAVED_LDFLAGS="${LDFLAGS}"
+ AC_MSG_CHECKING([for --fatal-warnings linker flag])
+ LDFLAGS=-Wl,--fatal-warnings
+ AC_TRY_LINK([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ [ldflags_fatal=-Wl,--fatal-warnings],
+ AC_MSG_RESULT(no)
+ ldflags_fatal=)
+ AC_MSG_CHECKING([for -z,nodelete linker flag])
+ LDFLAGS="$ldflags_fatal -Wl,-z,nodelete"
+ AC_TRY_LINK([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ enable_znodelete=yes,
+ AC_MSG_RESULT(no)
+ enable_znodelete=no)
+ LDFLAGS="${SAVED_LDFLAGS}"])
+
+if test "x${enable_znodelete}" = "xyes"; then
+ GOBJECT_LINK_FLAGS=-Wl,-z,nodelete
+fi
+
+AC_SUBST(GOBJECT_LINK_FLAGS)
+
+dnl
dnl Check for -fvisibility=hidden to determine if we can do GNU-style
dnl visibility attributes for symbol export control
dnl

View File

@ -0,0 +1,44 @@
$OpenBSD: patch-gio_gtlscertificate_c,v 1.1 2014/04/10 07:29:06 ajacoutot Exp $
From a36ed2715670b35b2718e8ffe0493d9d921e55b5 Mon Sep 17 00:00:00 2001
From: Dan Winship <danw@gnome.org>
Date: Wed, 9 Apr 2014 10:39:45 -0400
Subject: gtlscertificate: fix certificate list parsing with trailing comments
--- gio/gtlscertificate.c.orig Sat Feb 22 16:29:07 2014
+++ gio/gtlscertificate.c Thu Apr 10 09:09:34 2014
@@ -476,19 +476,24 @@ g_tls_certificate_list_new_from_file (const gchar *fi
{
gchar *cert_pem;
GTlsCertificate *cert = NULL;
+ GError *parse_error = NULL;
- cert_pem = parse_next_pem_certificate (&p, end, FALSE, error);
+ cert_pem = parse_next_pem_certificate (&p, end, FALSE, &parse_error);
if (cert_pem)
- {
- cert = g_tls_certificate_new_internal (cert_pem, NULL, error);
- g_free (cert_pem);
- }
+ {
+ cert = g_tls_certificate_new_internal (cert_pem, NULL, &parse_error);
+ g_free (cert_pem);
+ }
if (!cert)
- {
- g_list_free_full (queue.head, g_object_unref);
- queue.head = NULL;
- break;
- }
+ {
+ if (parse_error)
+ {
+ g_propagate_error (error, parse_error);
+ g_list_free_full (queue.head, g_object_unref);
+ queue.head = NULL;
+ }
+ break;
+ }
g_queue_push_tail (&queue, cert);
}

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-gobject_Makefile_in,v 1.14 2014/04/10 07:29:06 ajacoutot Exp $
From 3662eb9759fe225d1c214db6927c667a1b733e8a Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Mon, 2 Sep 2013 13:59:18 -0400
Subject: gobject: try to link with -Wl,-z,nodelete
--- gobject/Makefile.in.orig Thu Apr 10 09:11:42 2014
+++ gobject/Makefile.in Thu Apr 10 09:12:08 2014
@@ -870,6 +870,7 @@ lib_LTLIBRARIES = libgobject-2.0.la
@OS_WIN32_AND_DLL_COMPILATION_TRUE@gobject_win32_res_ldflag = -Wl,$(gobject_win32_res)
libgobjectincludedir = $(includedir)/glib-2.0/gobject
libgobject_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
+ $(GOBJECT_LINK_FLAGS) \
$(gobject_win32_res_ldflag) \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-export-dynamic $(no_undefined)