courier-authlib: exported symbols

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

courier-authlib: exported symbols

Markus Wanner
Hello Sam,

I'm about to take over maintenance of the courier-mta packages in
Debian, so I'll likely have further questions.

Let's start with a simple one regarding courier-authlib:

Compared to 0.66.4, these three symbols have vanished from
libcourierauthcommon.so.0 in version 0.67.0:

 * auth_parse_chpass_clause@Base 0.66.4
 * auth_parse_select_clause@Base 0.66.4
 * authgetconfig@Base 0.66.4

What happened to them?

Removing symbols is certain to be backwards-incompatible, but the
library's soversion didn't change. If the authlib is intended to be
backwards-incompatible, mind to incement the soversion?

In addition, these methods were added:

>  (c++)"courier::auth::config_file::expand_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@Base" 0.67.0
>  (c++)"courier::auth::config_file::open_and_load_file(bool)@Base" 0.67.0
>  (c++)"courier::auth::config_file::parse_custom_query(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&)@Base" 0.67.0
>  (c++)"courier::auth::config_file::load(bool)@Base" 0.67.0
>  (c++)"courier::auth::config_file::config_file(char const*)@Base" 0.67.0
>  (c++)"courier::auth::config_file::config_file(char const*)@Base" 0.67.0
>  (c++)"courier::auth::config_file::config[abi:cxx11](char const*) const@Base" 0.67.0
>  (c++)"courier::auth::config_file::config[abi:cxx11](char const*, char const*) const@Base" 0.67.0
>  (c++)"bool courier::auth::config_file::config<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool, char const*) const@Base" 0.67.0
>  (c++)"courier::auth::config_file::getconfig(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool, char const*) const@Base" 0.67.0
>  (c++)"std::ctype<char>::do_widen(char) const@Base" 0.67.0
>  (c++)"std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.67.0
>  (c++)"std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.67.0
>  (c++)"std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.67.0
>  (c++)"__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::__find_if<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_equals_val<char const> >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_equals_val<char const>, std::random_access_iterator_tag)@Base" 0.67.0
>  (c++)"__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::__find_if<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_pred<courier::auth::config_file::not_isspace> >(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_pred<courier::auth::config_file::not_isspace>, std::random_access_iterator_tag)@Base" 0.67.0
>  (c++)"__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::__find_if<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_pred<courier::auth::config_file::isspace> >(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__ops::_Iter_pred<courier::auth::config_file::isspace>, std::random_access_iterator_tag)@Base" 0.67.0
>  (c++)"typeinfo for courier::auth::config_file@Base" 0.67.0
>  (c++)"typeinfo name for courier::auth::config_file@Base" 0.67.0
>  (c++)"vtable for courier::auth::config_file@Base" 0.67.0

Do all of these really need to be visible?

Kind Regards

Markus Wanner
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
Reply | Threaded
Open this post in threaded view
|

Re: courier-authlib: exported symbols

Sam Varshavchik
Markus Wanner writes:

> Hello Sam,
>
> I'm about to take over maintenance of the courier-mta packages in
> Debian, so I'll likely have further questions.
>
> Let's start with a simple one regarding courier-authlib:
>
> Compared to 0.66.4, these three symbols have vanished from
> libcourierauthcommon.so.0 in version 0.67.0:
>
>  * auth_parse_chpass_clause@Base 0.66.4
>  * auth_parse_select_clause@Base 0.66.4
>  * authgetconfig@Base 0.66.4
>
> What happened to them?
>
> Removing symbols is certain to be backwards-incompatible, but the
> library's soversion didn't change. If the authlib is intended to be
> backwards-incompatible, mind to incement the soversion?
>
> In addition, these methods were added:
>
> >  
> (c++)"courier::auth::config_file::expand_string(std::__cxx11::basic_string<char,
libcourierauthcommon is not solely an externally-linked library. It's also  
linked to by other .so-s in the package. These symbols correspond to  
internal APIs.

> Do all of these really need to be visible?

Yes. Other modules in the library need them. The libraries could be  
refactored so that the internal APIs are placed into a separate, non-
versioned .so


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: courier-authlib: exported symbols

Markus Wanner
Sam,

On 03/31/2017 12:26 AM, Sam Varshavchik wrote:
> libcourierauthcommon is not solely an externally-linked library. It's
> also linked to by other .so-s in the package. These symbols correspond
> to internal APIs.

Am I correct to assume that libcourierauthcommon is an internal library
and not part of the public API of courier-auth, i.e. users of
courier-auth shouldn't ever directly link to it?

Do libauthpam.so and libauthcustom.so exposed a public API?

Kind Regards

Markus Wanner





------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: courier-authlib: exported symbols

Alessandro Vesely
Hi Markus,

On Fri 31/Mar/2017 09:36:27 +0200 Markus Wanner wrote:

> On 03/31/2017 12:26 AM, Sam Varshavchik wrote:
>> libcourierauthcommon is not solely an externally-linked library. It's
>> also linked to by other .so-s in the package. These symbols correspond
>> to internal APIs.
>
> Am I correct to assume that libcourierauthcommon is an internal library
> and not part of the public API of courier-auth, i.e. users of
> courier-auth shouldn't ever directly link to it?
>
> Do libauthpam.so and libauthcustom.so exposed a public API?
I, for one, run my own pipeauth

ldd /etc/courier/authlib/authProg
        linux-vdso.so.1 =>  (0x00007fffb59bc000)
        libcourierauthsasl.so => /usr/local/lib/courier-authlib/libcourierauthsasl.so (0x00007ff1e44cd000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff1e4140000)
        libcourierauthcommon.so => /usr/local/lib/courier-authlib/libcourierauthcommon.so (0x00007ff1e3f37000)
        libcourierauth.so => /usr/local/lib/courier-authlib/libcourierauth.so (0x00007ff1e3d2a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff1e46d0000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff1e3a23000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff1e37a1000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff1e358b000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007ff1e3354000)

API recently changed, so my authProg is now portable, but I haven't autoconfed it yet.
Ale


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

signature.asc (484 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: courier-authlib: exported symbols

Markus Wanner
Hello Alessandro,

On 03/31/2017 10:49 AM, Alessandro Vesely wrote:

> I, for one, run my own pipeauth
>
> ldd /etc/courier/authlib/authProg
> linux-vdso.so.1 =>  (0x00007fffb59bc000)
> libcourierauthsasl.so => /usr/local/lib/courier-authlib/libcourierauthsasl.so (0x00007ff1e44cd000)
> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff1e4140000)
> libcourierauthcommon.so => /usr/local/lib/courier-authlib/libcourierauthcommon.so (0x00007ff1e3f37000)
> libcourierauth.so => /usr/local/lib/courier-authlib/libcourierauth.so (0x00007ff1e3d2a000)
> /lib64/ld-linux-x86-64.so.2 (0x00007ff1e46d0000)
> libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff1e3a23000)
> libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff1e37a1000)
> libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff1e358b000)
> libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007ff1e3354000)
The interesting question here would be whether you're linking against
libcourierauthsasl (and using its symbols only) or if your authProg
depends on libcourierauthcommon, directly. (Indirectly, via
libcourierauthsasl, libcourierauthcommon will always be linked in either
case.)

(Other than that I note that you're not using Debian packages, in the
first place, so you wouldn't be affected. I still appreciate your
inputs. Maybe there are Debian users doing or wanting to do the same.)

Kind Regards

Markus Wanner



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: courier-authlib: exported symbols

Sam Varshavchik
In reply to this post by Markus Wanner
Markus Wanner writes:

> Sam,
>
> On 03/31/2017 12:26 AM, Sam Varshavchik wrote:
> > libcourierauthcommon is not solely an externally-linked library. It's
> > also linked to by other .so-s in the package. These symbols correspond
> > to internal APIs.
>
> Am I correct to assume that libcourierauthcommon is an internal library
> and not part of the public API of courier-auth, i.e. users of
> courier-auth shouldn't ever directly link to it?
No, I said "solely". Apps do link to libcourierauthcommon.

> Do libauthpam.so and libauthcustom.so exposed a public API?

No, these ones are internal modules only.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
courier-users mailing list
[hidden email]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

attachment0 (817 bytes) Download Attachment