Bug #21341 Shared compatibilty library RPMs are incomplete (4.1.21)
Submitted: 29 Jul 2006 16:24 Modified: 4 Aug 2006 21:37
Reporter: [ name withheld ]
Status: Closed
Category:Server: Packaging Severity:S2 (Serious)
Version:4.1.21 OS:Any (all Linux)
Assigned to: Joerg Bruehe Target Version:

[29 Jul 2006 16:24] [ name withheld ]
Description:
The shared compatibility libraries available for download on this page:

http://dev.mysql.com/downloads/mysql/4.1.html

Appear to be incomplete. I tested this using the RPMs from the "Red Hat Enterprise Linux
3 RPM (x86) downloads" section, but judging from the file sizes reported for other
platforms it appears that in all cases the "shared compatibility libraries" are identical
to the standard "shared libraries".

This is a serious problem because anything that depends on the older shared libraries
will cease to function, resulting in a denial of service. In my case I noticed the
problem when Apache refused to restart:

"Cannot load /etc/httpd/modules/mod_auth_mysql.so into server: libmysqlclient.so.10:
cannot open shared object file: No such file or directory"

To see the cause of the problem, compare the file sizes of the following RPMs (for the
previous version, 4.1.20):

1663373 MySQL-shared-compat-4.1.20-0.rhel3.i386.rpm
1183446 MySQL-shared-standard-4.1.20-0.rhel3.i386.rpm

Note that the shared compatibility variant is significantly larger, because it contains
the older compatibility versions of the shared libraries. But look at the file sizes for
version 4.1.21 below, and note that the compatibility variant is actually a few bytes
smaller!

1173276 MySQL-shared-compat-4.1.21-0.rhel3.i386.rpm
1184092 MySQL-shared-standard-4.1.21-0.rhel3.i386.rpm

Here is a listing of the contents of the 4.1.21 compatibility RPM, produced using "rpm -q
--dump --package":

/usr/lib/libmysqlclient.so 24 1153391670 00000000000000000000000000000000 0120777 root
root 0 0 1793 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153391670 00000000000000000000000000000000 0120777 root
root 0 0 2560 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1174404 1153391671 042ee1c839ea36cbdb8c322319b2880b
0100755 root root 0 0 1792 X
/usr/lib/libmysqlclient_r.so 26 1153391670 00000000000000000000000000000000 0120777 root
root 0 0 18692 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153391670 00000000000000000000000000000000 0120777
root root 0 0 18700 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1182664 1153391671 a7dbf18b56a1b1f6313d954d2d63398a
0100755 root root 0 0 0 X

And note that it is almost identical to the contents of the non-compatibility RPM:

/usr/lib/libmysqlclient.so 24 1153331468 00000000000000000000000000000000 0120777 root
root 0 0 35523 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153331468 00000000000000000000000000000000 0120777 root
root 0 0 12627 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1180748 1153333472 96ca3a562098a4f8e4b2c70490b5071b
0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1153331468 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153331468 00000000000000000000000000000000 0120777
root root 0 0 16991 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1189008 1153333474 b51c25cb41e28d6eaeebf818ab7b3a33
0100755 root root 0 0 12696 X

Compare this with version 4.1.20 of the compatibility libraries, and note that they
contain more files:

/usr/lib/libmysqlclient.so 24 1148687703 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.10 24 1148687704 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient.so.10.0.0
/usr/lib/libmysqlclient.so.10.0.0 224606 1148687704 579c6fecfad48cb3e8748811026f4890
0100755 root root 0 0 0 X
/usr/lib/libmysqlclient.so.12 24 1148687703 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient.so.12.0.0
/usr/lib/libmysqlclient.so.12.0.0 251559 1148687703 2fae279de1a3929b178d89333103eacc
0100755 root root 0 0 0 X
/usr/lib/libmysqlclient.so.14 24 1148687703 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1174404 1148687704 3321ec4c92a8aa37869f45ae461d6a0b
0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1148687703 00000000000000000000000000000000 0120777 root
root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.10 26 1148687704 00000000000000000000000000000000 0120777
root root 0 0 0 libmysqlclient_r.so.10.0.0
/usr/lib/libmysqlclient_r.so.10.0.0 230560 1148687704 f358f523cb4a364eb8105d9a0f49f943
0100755 root root 0 0 17384 X
/usr/lib/libmysqlclient_r.so.12 26 1148687703 00000000000000000000000000000000 0120777
root root 0 0 0 libmysqlclient_r.so.12.0.0
/usr/lib/libmysqlclient_r.so.12.0.0 259501 1148687703 ab26ebef4759527211545190ccedebb5
0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so.14 26 1148687703 00000000000000000000000000000000 0120777
root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1182664 1148687704 975c049c8d71a123c30392fdb182cf98
0100755 root root 0 0 0 X

How to repeat:
Download the RPMs from http://dev.mysql.com/downloads/mysql/4.1.html

Perform comparisons using "rpm -q --dump --package full-name-of.rpm"

Suggested fix:
Workaround:

Go back to 4.1.20:

Permanent fix:

Repackage the RPM files for 4.1.21 so that they contain missing files.
[29 Jul 2006 18:32] Valeriy Kravchuk
Thank you for a bug report. Verified just as described (with yet another RPM):

$ rpm -q --dump --package MySQL-shared-compat-4.1.21-0.i386.rpm
warning: MySQL-shared-compat-4.1.21-0.i386.rpm: V3 DSA signature: NOKEY, key ID
5072e1f5
/usr/lib/libmysqlclient.so 24 1153392656 00000000000000000000000000000000 012077
7 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14 24 1153392656 00000000000000000000000000000000 012
0777 root root 0 0 0 libmysqlclient.so.14.0.0
/usr/lib/libmysqlclient.so.14.0.0 1402629 1153392656 070159098f2f510751a223b7d71
975de 0100755 root root 0 0 0 X
/usr/lib/libmysqlclient_r.so 26 1153392656 00000000000000000000000000000000 0120
777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14 26 1153392656 00000000000000000000000000000000 0
120777 root root 0 0 0 libmysqlclient_r.so.14.0.0
/usr/lib/libmysqlclient_r.so.14.0.0 1410570 1153392656 319bbbe450341c67f9ec03ee0
b87262e 0100755 root root 0 0 0 X

Looks like there are no older libraries included, really.
[3 Aug 2006 18:23] Joerg Bruehe
Done.

New "shared-compat" RPMs of 4.1.21 have been created as "release 1" (RPM),
so the file names are like this:

MySQL-shared-compat-4.1.21-1.<platform>.rpm

They should now propagate through the mirrors, the download page will be switched when
propagation is ok.
The old, broken ones (MySQL-shared-compat-4.1.21-0.*.rpm), have been removed from the
publishing space, they should automatically disappear from the mirrors.
[4 Aug 2006 21:37] [ name withheld ]
Did a test with the new release of the shared compatibility RPMs (Red Hat Enterprise Linux
3 RPM x86). Verified fixed.