Re: Preventing abort() and exit() calls in libpq

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jacob Champion <pchampion@vmware.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Daniel Gustafsson <daniel@yesql.se>
Date: 2021-06-28T07:52:12Z
Lists: pgsql-hackers
On Sat, Jun 26, 2021 at 05:29:29PM -0400, Tom Lane wrote:
> I'll stick this into the CF list to see if the cfbot agrees that
> it finds the abort() problems...

The CF Bot is finding those problems.

> +# Check for functions that libpq must not call.
> +# (If nm doesn't exist or doesn't work on shlibs, this test will silently
> +# do nothing, which is fine.)
> +.PHONY: check-libpq-refs
> +check-libpq-refs: $(shlib)
> +	@! nm -A -g -u $< 2>/dev/null | grep -e abort -e exit

"abort" and "exit" could be generic terms present in some other
libraries.  Could be be better to match with "U abort" and "U exit"
instead?  MinGW has a nm command, and it has a compatible option set,
so I think that it should work.
--
Michael

Commits

  1. Further restrict the scope of no-exit()-in-libpq test.

  2. Improve build-time check that libpq doesn't call exit().

  3. Fix portability fallout from commit dc227eb82.

  4. Add a build-time check that libpq doesn't call exit() or abort().