Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hsHoX-0007T2-G7 for pgsql-bugs@arkaria.postgresql.org; Tue, 30 Jul 2019 02:24:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hsHoT-0002EC-Q1 for pgsql-bugs@arkaria.postgresql.org; Tue, 30 Jul 2019 02:24:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hsHoT-0002E4-Ao for pgsql-bugs@lists.postgresql.org; Tue, 30 Jul 2019 02:24:29 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1hsHoQ-0000kN-EC for pgsql-bugs@lists.postgresql.org; Tue, 30 Jul 2019 02:24:27 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 2B97D3E5; Mon, 29 Jul 2019 22:24:25 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 29 Jul 2019 22:24:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paquier.xyz; h= date:from:to:subject:message-id:references:mime-version :content-type:in-reply-to; s=fm2; bh=EV4IPT1ZfiCbf7yRiHuO64GrB2J qZAhAOg/7qGmPvgw=; b=Wzh7N/+LVGXHqQMYGTeSTXj3oLSRx8aySuhQxfqN2Ji 512KEblxtmvnM27F7TKK59l0hh80/Vj7yELJuJxwGPh0GW8OvjoTD5kYlnXgPEks gHeAiWUI5dX4YYEL6Ni1BWiLjxwC0yw8t3hbFye7WfWCZOWYQAtNk8p5mxFhOsqL 32XbDvBeXRBwYtoLW6rzX7TNEE4p1iryjj1a/QCnOqzSKcRxpZbIG3JAuNcx/16o 3bwRNWCNLWsvFMXA5sbkqUO7QhXNnPjw0fSwLk5VjJyM7lMFz1YXWJt1Z8GTf1rK ZJ94x+fF1FkfhKNMMvpQUqov2eJA03aYRqpksvB/PbQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=EV4IPT 1ZfiCbf7yRiHuO64GrB2JqZAhAOg/7qGmPvgw=; b=iWvoj8d1TDHVrKry/mPJnv eCiRr0FTHTkWF9f2xPNsFbAYWFd9OFNPISOMQrbkSBuQo+baJ6XfPsF7TVzEZIEt b9K5i9HHra3QLX1LyGVRQY74Gk+cnk9u7AG/z34bnK0yyx6MuG27UbpqwEjNyw9z KfnxvQ/MWufZI4bpnZjDaQ3l783YD9LGTALyw8VG29JZBy6TazFENOLvUnCEj/PA 5BIPKBk8MiCyJu233ScqU5aVrx1djPYVu7GTjgY5z2u879OcpQvj8q+EzFJtVrqO kIjvUobEfyz+0m6H5tAoyvYy3lWwx2m5Azx9Cj2Ej1/zsjOExK1BvsWKKUbfoGNA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduvddrledvgdehkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecufghrlhcuvffnffculdefhedmnecujfgurhepfffhvf fukfhfgggtuggjsehgtderredttddvnecuhfhrohhmpefoihgthhgrvghlucfrrghquhhi vghruceomhhitghhrggvlhesphgrqhhuihgvrhdrgiihiieqnecuffhomhgrihhnpehgih hthhhusgdrtghomhenucfkphepudduuddruddtvddrudektddrudekheenucfrrghrrghm pehmrghilhhfrhhomhepmhhitghhrggvlhesphgrqhhuihgvrhdrgiihiienucevlhhush htvghrufhiiigvpedt X-ME-Proxy: Received: from paquier.xyz (ee0822lan1.rev.em-net.ne.jp [111.102.180.185]) by mail.messagingengine.com (Postfix) with ESMTPA id 4B5CB380079; Mon, 29 Jul 2019 22:24:23 -0400 (EDT) Date: Tue, 30 Jul 2019 11:24:20 +0900 From: Michael Paquier To: rafaelthca@gmail.com, pgsql-bugs@lists.postgresql.org Subject: Re: BUG #15932: Module passwordcheck doesn't reference previous hooks Message-ID: <20190730022420.GC1742@paquier.xyz> References: <15932-78f48f9ef166778c@postgresql.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="+KJYzRxRHjYqLGl5" Content-Disposition: inline In-Reply-To: <15932-78f48f9ef166778c@postgresql.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --+KJYzRxRHjYqLGl5 Content-Type: multipart/mixed; boundary="eHhjakXzOLJAF9wJ" Content-Disposition: inline --eHhjakXzOLJAF9wJ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jul 29, 2019 at 03:56:35PM +0000, PG Bug reporting form wrote: > Module passwordcheck doesn't reference (thus, doesn't call) previous > hooks: >=20 > https://github.com/postgres/postgres/blob/master/contrib/passwordcheck/pa= sswordcheck.c#L133 >=20 > As a result, if passwordcheck is used hook check_password_hook becomes > useless. So, it would erase the trace of previous hooks if loaded last. passwordcheck holds value as an example of use for some hooks, and examples should be a good students, so I agree to do better and fix that. The attached patch does the work, what do you think about it? -- Michael --eHhjakXzOLJAF9wJ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="passwordcheck-prev-hook-v1.patch" Content-Transfer-Encoding: quoted-printable diff --git a/contrib/passwordcheck/passwordcheck.c b/contrib/passwordcheck/= passwordcheck.c index b161e0f146..0cc51d1489 100644 --- a/contrib/passwordcheck/passwordcheck.c +++ b/contrib/passwordcheck/passwordcheck.c @@ -26,10 +26,14 @@ =20 PG_MODULE_MAGIC; =20 +/* Saved hook value in case of unload */ +static check_password_hook_type prev_check_password_hook =3D NULL; + /* passwords shorter than this will be rejected */ #define MIN_PWD_LENGTH 8 =20 extern void _PG_init(void); +extern void _PG_fini(void); =20 /* * check_password @@ -55,6 +59,11 @@ check_password(const char *username, Datum validuntil_time, bool validuntil_null) { + if (prev_check_password_hook) + prev_check_password_hook(username, shadow_pass, + password_type, validuntil_time, + validuntil_null); + if (password_type !=3D PASSWORD_TYPE_PLAINTEXT) { /* @@ -133,5 +142,15 @@ void _PG_init(void) { /* activate password checks when the module is loaded */ + prev_check_password_hook =3D check_password_hook; check_password_hook =3D check_password; } + +/* + * Module unload function + */ +void +_PG_fini(void) +{ + check_password_hook =3D prev_check_password_hook; +} --eHhjakXzOLJAF9wJ-- --+KJYzRxRHjYqLGl5 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEG72nH6vTowiyblFKnvQgOdbyQH0FAl0/qlQACgkQnvQgOdby QH1f7w/7B0+n/7437o56SWkqNKMwiOn+u576C2zTYM6c/pTmiaE+EziH8npi3f8r Tor+qHj23zZyqo18GcVouRt8/DnsSfkmzwfrX7NZ99XNYgc0CRUVXmsu31rSSvd2 jvakoX9pN+PT9mxDVrGzY4O6nNz7zVFTaoHTKOZJBS3oqk6+GeSgNRgbcCKgNZb6 M44iIyVYE69jwQ4XGqnmFADxMWteDucVioaBlOAwXGDYH3WiLFY61HtSyX1yRWKh g4o5uYjViBFyTHrlGlzalGt7pWKNklB3UFO9uSCzXmNz6X2TjzfOYbMvuIN2ujZs 26vjZ31RnLQaAWolkMd20eBxJ2WlwC8XcOUOqrNIPDdJS3K9JPiblmI3FzzUf/n9 zImxSulsoUmpsEDQSDUpnzOgZxtQo/w6f8BWzTHw4yfs1/Ak4g/YtRbIXHgKKXXB /bTNyOn8WsGp+e/Dz+V+M7Kv0m5tiC0lmNJ6lUc8fvQhXWVqVWYniK8YaNOkXqVN VB973d8YzQUFWNQnzqRLE9ECBJJR2DWg2Pk+D7SJELDKJjuUMV4lQ50AhSFNZn/y kYS9lFsx3aD3TkuGr5pZtzXQ2FfEq/QUFGxpEERyr69TgG9y4MmfHFqYI3soyrup FRx5ronS3fXoAiIPc/x1i8Hi1Kht6pOxVAC2KdV4WpN6pXZ9XA0= =KegJ -----END PGP SIGNATURE----- --+KJYzRxRHjYqLGl5--