Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1166012 - libkadmclnt SONAME change (8 to 9) in krb5 1.12 update
libkadmclnt SONAME change (8 to 9) in krb5 1.12 update
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: krb5 (Show other bugs)
7.1
Unspecified Unspecified
high Severity urgent
: rc
: ---
Assigned To: Roland Mainz
Patrik Kis
: Regression
Depends On:
Blocks: 1165748
  Show dependency treegraph
 
Reported: 2014-11-20 04:28 EST by Dominic Cleal
Modified: 2016-05-02 07:21 EDT (History)
12 users (show)

See Also:
Fixed In Version: krb5-1.12.2-9.el7
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1165748
Environment:
Last Closed: 2015-03-05 05:01:28 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2015:0439 normal SHIPPED_LIVE Moderate: krb5 security, bug fix and enhancement update 2015-03-05 09:38:14 EST

  None (edit)
Comment 17 Roland Mainz 2014-12-02 13:51:21 EST
OK... the idea with symlinks/hardlinks is dead:
-- snip --
[root@cisco-b22m3-01 ~]# ln /usr/lib64/libkadm5clnt_mit.so.9 /usr/lib64/libkadm5clnt_mit.so.8
[root@cisco-b22m3-01 ~]# ln /usr/lib64/libkadm5clnt_mit.so.9.0 /usr/lib64/libkadm5clnt_mit.so.8.0
[root@cisco-b22m3-01 ~]# yum install http://yum.theforeman.org/releases/1.7/el7/x86_64/rubygem-rkerberos-0.1.3-2.1.el7.x86_64.rpm
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Repository 'adelton-identity' is missing name in configuration, using id
rubygem-rkerberos-0.1.3-2.1.el7.x86_64.rpm                                                                               |  28 kB  00:00:00     
Examining /var/tmp/yum-root-5uGpwc/rubygem-rkerberos-0.1.3-2.1.el7.x86_64.rpm: rubygem-rkerberos-0.1.3-2.1.el7.x86_64
Marking /var/tmp/yum-root-5uGpwc/rubygem-rkerberos-0.1.3-2.1.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package rubygem-rkerberos.x86_64 0:0.1.3-2.1.el7 will be installed
--> Processing Dependency: libkadm5clnt_mit.so.8(kadm5clnt_mit_8_MIT)(64bit) for package: rubygem-rkerberos-0.1.3-2.1.el7.x86_64
--> Processing Dependency: libkadm5clnt_mit.so.8()(64bit) for package: rubygem-rkerberos-0.1.3-2.1.el7.x86_64
--> Finished Dependency Resolution
Error: Package: rubygem-rkerberos-0.1.3-2.1.el7.x86_64 (/rubygem-rkerberos-0.1.3-2.1.el7.x86_64)
           Requires: libkadm5clnt_mit.so.8()(64bit)
Error: Package: rubygem-rkerberos-0.1.3-2.1.el7.x86_64 (/rubygem-rkerberos-0.1.3-2.1.el7.x86_64)
           Requires: libkadm5clnt_mit.so.8(kadm5clnt_mit_8_MIT)(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest-- snip --
-- snip --

... so we're back to the options of ...
1. ... not using private APIs
    OR
2. ... undo the SONAME change
Comment 18 Simo Sorce 2014-12-02 14:36:19 EST
There is another option, ship both version 8 and 9 of the library, but it will require some work on the build side.
If it is too much I suggest we roll back the SONAME change with a downstream patch.
Comment 19 Sumit Bose 2014-12-02 15:06:03 EST
I think there really is no chance other than providing a version 8 library because the version information is added:

objdump -T /usr/lib64/gems/ruby/rkerberos-0.1.3/lib/rkerberos.so|grep kadm
0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT kadm5_get_principals
0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT kadm5_init_with_skey
0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT kadm5_modify_policy
...

To fix this you might want to try to

cp -a src/lib/kadm5/clnt src/lib/kadm5/clnt8
sed -i -e 's/LIBMAJOR=9/LIBMAJOR=8/' src/lib/kadm5/clnt8/Makefile.in
sed -i -e 's/SUBDIRS = clnt srv unit-test/SUBDIRS = clnt8 clnt srv unit-test/' lib/kadm5/Makefile.in
(I have not tested it, but I hope the idea is obvious)

before calling configure in the spec file.

HTH

bye,
Sumit
Comment 20 Roland Mainz 2014-12-02 16:45:23 EST
(In reply to Sumit Bose from comment #19)
> I think there really is no chance other than providing a version 8 library
> because the version information is added:
> 
> objdump -T /usr/lib64/gems/ruby/rkerberos-0.1.3/lib/rkerberos.so|grep kadm
> 0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT
> kadm5_get_principals
> 0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT
> kadm5_init_with_skey
> 0000000000000000      DF *UND*	0000000000000000  kadm5clnt_mit_8_MIT
> kadm5_modify_policy
> ...

Yes... I figured that out earlier today...
... I'm currently testing the following change:
-- snip --
--- a/src/lib/kadm5/clnt/Makefile.in
+++ b/src/lib/kadm5/clnt/Makefile.in
@@ -4,7 +4,7 @@ LOCALINCLUDES = -I$(BUILDTOP)/include/kadm5
 DEFS=
 
 LIBBASE=kadm5clnt_mit
-LIBMAJOR=9
+LIBMAJOR=8
 LIBMINOR=0
 STOBJLISTS=../OBJS.ST OBJS.ST
 SHLIB_EXPDEPS=\
-- snip --
(and curse the situation).

> To fix this you might want to try to> 
> cp -a src/lib/kadm5/clnt src/lib/kadm5/clnt8
> sed -i -e 's/LIBMAJOR=9/LIBMAJOR=8/' src/lib/kadm5/clnt8/Makefile.in
> sed -i -e 's/SUBDIRS = clnt srv unit-test/SUBDIRS = clnt8 clnt srv
> unit-test/' lib/kadm5/Makefile.in
> (I have not tested it, but I hope the idea is obvious)
> 
> before calling configure in the spec file.

Thanks... but for now I just roll back the library version change... I'm already 80% done with testing...

BTW: A 3rd option would be symbol filters/redirection, e.g. see http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libcmd/mapfile-vers#104 ... in our case we would have a library libkadm5clnt_mit.so.8 which redirects all symbol accesses to libkadm5clnt_mit.so.9 (this would prevent any code/symbol duplication) ... but I am not sure whether the GNU linker supports this feature.
Comment 22 Patrik Kis 2015-01-14 10:20:43 EST
I see that the new version of krb5-libs provides libkadm5clnt_mit.so.8 (!version 8) and libkadm5srv_mit.so.9 (!version 9).

# rpm -qp --provides krb5-libs-1.12.2-13.el7.x86_64.rpm |grep libkadm5
libkadm5clnt_mit.so.8()(64bit)
libkadm5clnt_mit.so.8(HIDDEN)(64bit)
libkadm5clnt_mit.so.8(kadm5clnt_mit_8_MIT)(64bit)
libkadm5srv_mit.so.9()(64bit)
libkadm5srv_mit.so.9(HIDDEN)(64bit)
libkadm5srv_mit.so.9(kadm5srv_mit_9_MIT)(64bit)

Is this intentional, e.g. not decreasing the version for srv too? I know that this is basically only playing with numbers, nothing really changed, but I'd like to double check that this is really what we want.
Comment 23 Roland Mainz 2015-01-16 16:36:39 EST
(In reply to Patrik Kis from comment #22)
[snip]
> Is this intentional, e.g. not decreasing the version for srv too? 

Per krb5 upstream the srv libraries were not touched by the specific commit which caused our trouble...
Comment 27 errata-xmlrpc 2015-03-05 05:01:28 EST
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-0439.html

Note You need to log in before you can comment on or make changes to this bug.