Hi,

after linking my database client application with a crypto library (as shared library), I noticed that I couldn't connect to postgresql any longer. Error message was "Password authentication failed".

After some time I found out that the issue was caused by both the crypto library and libpq.so defining the symbol md5_hash. After renaming the function name (thanks to open source!), the error went away.

Wouldn't it be a good idea to have all exported symbols in libpq.so carry a postgres related prefix like 'PQ', 'pq', or 'pg_' (most of them already do)? This way symbol name clashes would become less probable.

Symbols in question (postgresql 80 on solaris) include (nm libpq.so | fgrep ' T '): EncryptMD5, SockAddr_cidr_mask, check_sigpipe_handler, freeaddrinfo_all, getaddrinfo_all, getnameinfo_all, md5_hash, promote_v4_to_v6_addr, promote_v4_to_v6_mask, rangeSockAddr, set_noblock.

AFAICS these functions are used by the server and maybe not all of these functions need to be exported to the shared client libpq anyway?

Regards,
 Martin

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to