On 02/03/2018 04:29 PM, Demetris Demetriou wrote:
> Package: pure-ftpd-mysql
> Severity: important
> 
> Hello,
> 
> Pure-ftpd fails to start on newer MariaDB versions (>=10.2) due to an issue
> with my_make_scrambled_password. Full comment by MariaDB developers below. 
> More
> info at
> https://jira.mariadb.org/browse/MDEV-12889?focusedCommentId=97156&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-
> tabpanel#comment-97156
> 
> Quoted comment:
> "There is definitely an issue with pureftpd. Or, rather, there was. Here's the
> full story:
> 
> In its early days, say, about 20 years ago, libmysqlclient did not version
> symbols and did not limit their visibility. Some functions were documented —
> they were client API, and we promised to keep them stable, working over years.
> Other functions were not documented, they were internal, no promises. But they
> were exported and available too.
> 
> Later, in MariaDB time, we took a closer look at that. RedHat was versioning
> libmysqlclient symbols. Old symbols from libmysqlclient.so.16.0.0 had the
> version libmysqlclient_16, newer symbols had the version libmysqlclient_18.
> Internal symols was hidden, with few exceptions. One of such exceptions was
> my_make_scrambled_password, because pureftpd started using it since the old
> days, when everything was kind of allowed. Debian had a different, simpler 
> (and
> less correct) approach to versioning, all symbols had libmysqlclient_18
> version. In MariaDB we managed to create a library compatible with both
> approaches. my_make_scrambled_password was not hidden, with the comment "for
> pureftpd".
> 
> Now, a couple of days ago, I wanted to report this bug to pureftpd, to have it
> finally fixed and not use internal non-public libmysqlclient symbols. And I
> found that pureftpd source have this:
> 
> # ifdef HAVE_MY_MAKE_SCRAMBLED_PASSWORD
>         my_make_scrambled_password(scrambled_password, password,
>                                    strlen(password));
> # elif defined(HAVE_MAKE_SCRAMBLED_PASSWORD)
>         make_scrambled_password(scrambled_password, password);
> # else
>         {
>             SHA1_CTX       ctx;
>             unsigned char  h0[20], h1[20];
>             char          *p;
> 
>             SHA1Init(&ctx);
>             SHA1Update(&ctx, password, strlen(password));
>             SHA1Final(h0, &ctx);
>             SHA1Init(&ctx);
>             SHA1Update(&ctx, h0, sizeof h0);
>             pure_memzero(h0, sizeof h0);
>             SHA1Final(h1, &ctx);
>             *scrambled_password = '*';
>             hexify(scrambled_password + 1U, h1,
>                    (sizeof scrambled_password) - 1U, sizeof h1);
>             *(p = scrambled_password) = '*';
>             while (*p++ != 0) {
>                 *p = (char) toupper((unsigned char) *p);
>             }
>         }
> # endif
> That is, it only uses make_scrambled_password if it's available, otherwise it
> can perfectly do without. So, now it's Debian bug, because they build pureftpd
> to use internal libmysqlclient symbols, while they perfectly can avoid that.
> 
> Even more, I've found that in the latest pureftpd sources on github, they've
> removed this ifdef and don't use make_scrambled_password at all anymore.
> https://github.com/jedisct1/pure-
> ftpd/commit/27443b29320d85352d8b52c0120836843e10c0f9
> 
> So it was pureftpd issue, and they've fixed it.
> Sergei Golubchik
> Missing versioning is our issue and we'll fix it." - Sergei Golubchik
> 
> 
> Waiting for the newer version to trickle down through the normal release cycle
> would mean that every one that uses pure-ftpd with newer MariaDB servers will
> wait at least a couple of years for a solution, which in production
> environments is not an acceptable solution. The easiest solution would be to
> provide an up-to-date version through debian-backports, or alternatively bump
> up the package in Debian stable to the latest version through an exception to
> the normal release schedule.
> 

Hello Demetris,

I will checkout your suggestions how to solve this problems.

Thanks for your report.

Regards
          Racke

> 
> 
> 
> -- System Information:
> Debian Release: 9.3
>   APT prefers stable-updates
>   APT policy: (500, 'stable-updates'), (500, 'stable')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 4.9.0-5-amd64 (SMP w/4 CPU cores)
> Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), 
> LANGUAGE=en_US:en (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)
> 
> Versions of packages pure-ftpd-mysql depends on:
> ii  libc6                             2.24-11+deb9u1
> ii  libcap2                           1:2.25-1
> pn  libmariadbclient18                <none>
> ii  libpam0g                          1.1.8-3.6
> ii  libssl1.1                         1.1.0f-3+deb9u1
> ii  lsb-base                          9.20161125
> pn  openbsd-inetd | inet-superserver  <none>
> pn  pure-ftpd-common                  <none>
> ii  zlib1g                            1:1.2.8.dfsg-5
> 
> pure-ftpd-mysql recommends no packages.
> 
> pure-ftpd-mysql suggests no packages.
> 


-- 
Ecommerce and Linux consulting + Perl and web application programming.
Debian and Sympa administration. Provisioning with Ansible.

Reply via email to