libkrb5 exports base64_decode and base64_encode (which appear to only be

needed internally), these conflict with symbols in dovecot's internal shared
library, causing the wrong version of the functions to be used in some cases.

Since we are in userland ABI API lock we cannot clean libkrb5 at present
so make a nasty workaround by statically linking the affected binaries with
libdovecot so the correct symbols take priority.

Fixes crashes I hit in doveadm and potentially some auth mechanisms.

OK ajacoutot@, Brad (maintainer)
This commit is contained in:
sthen 2012-01-28 21:35:02 +00:00
parent 8bb0a19380
commit 0ad0a1a16e
3 changed files with 36 additions and 2 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.180 2012/01/16 23:59:22 sthen Exp $
# $OpenBSD: Makefile,v 1.181 2012/01/28 21:35:02 sthen Exp $
SHARED_ONLY= Yes
@ -15,7 +15,7 @@ V_DOVECOT= 2.0.17
DISTNAME= dovecot-${V_DOVECOT}
PKGNAME= dovecot-${V_DOVECOT}
PKGNAME-server= dovecot-${V_DOVECOT}
REVISION-server= 0
REVISION-server= 1
PKGNAME-ldap= dovecot-ldap-${V_DOVECOT}
PKGNAME-mysql= dovecot-mysql-${V_DOVECOT}
PKGNAME-postgresql= dovecot-postgresql-${V_DOVECOT}

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-src_auth_Makefile_in,v 1.1 2012/01/28 21:35:02 sthen Exp $
Heimdal libkrb5 exports base64_encode and base64_decode conflicting
with libdovecot's versions. Workaround the namespace pollution issue
by statically linking libdovecot so its symbols take precedence.
--- src/auth/Makefile.in.orig Sat Jan 28 20:46:02 2012
+++ src/auth/Makefile.in Sat Jan 28 20:46:30 2012
@@ -218,7 +218,7 @@ LD = @LD@
LDAP_LIBS = @LDAP_LIBS@
LDFLAGS = @LDFLAGS@
LIBCAP = @LIBCAP@
-LIBDOVECOT = @LIBDOVECOT@
+LIBDOVECOT = $(top_builddir)/src/lib-dovecot/.libs/libdovecot.a
LIBDOVECOT_DEPS = @LIBDOVECOT_DEPS@
LIBDOVECOT_LDA = @LIBDOVECOT_LDA@
LIBDOVECOT_LOGIN = @LIBDOVECOT_LOGIN@

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-src_doveadm_Makefile_in,v 1.1 2012/01/28 21:35:02 sthen Exp $
Heimdal libkrb5 exports base64_encode and base64_decode conflicting
with libdovecot's versions. Workaround the namespace pollution issue
by statically linking libdovecot so its symbols take precedence.
--- src/doveadm/Makefile.in.orig Fri Jan 6 13:26:43 2012
+++ src/doveadm/Makefile.in Sat Jan 28 20:22:18 2012
@@ -146,7 +146,7 @@ LD = @LD@
LDAP_LIBS = @LDAP_LIBS@
LDFLAGS = @LDFLAGS@
LIBCAP = @LIBCAP@
-LIBDOVECOT = @LIBDOVECOT@
+LIBDOVECOT = $(top_builddir)/src/lib-dovecot/.libs/libdovecot.a
LIBDOVECOT_DEPS = @LIBDOVECOT_DEPS@
LIBDOVECOT_LDA = @LIBDOVECOT_LDA@
LIBDOVECOT_LOGIN = @LIBDOVECOT_LOGIN@