v47-0004-fixup-Add-OAUTHBEARER-SASL-mechanism.patch

application/octet-stream

Filename: v47-0004-fixup-Add-OAUTHBEARER-SASL-mechanism.patch
Type: application/octet-stream
Part: 4
Message: Re: [PoC] Federated Authn/z with OAUTHBEARER

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v47-0004
Subject: fixup! Add OAUTHBEARER SASL mechanism
File+
src/backend/libpq/auth-oauth.c 9 4
src/test/modules/oauth_validator/validator.c 1 1
From fd60ceb4c849c2a13b0201b57753506b60718e6e Mon Sep 17 00:00:00 2001
From: Jacob Champion <jacob.champion@enterprisedb.com>
Date: Thu, 6 Feb 2025 20:22:03 -0800
Subject: [PATCH v47 04/11] fixup! Add OAUTHBEARER SASL mechanism

---
 src/backend/libpq/auth-oauth.c               | 13 +++++++++----
 src/test/modules/oauth_validator/validator.c |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/backend/libpq/auth-oauth.c b/src/backend/libpq/auth-oauth.c
index 6155d63a116..d910cbcb161 100644
--- a/src/backend/libpq/auth-oauth.c
+++ b/src/backend/libpq/auth-oauth.c
@@ -39,7 +39,7 @@ static int	oauth_exchange(void *opaq, const char *input, int inputlen,
 						   char **output, int *outputlen, const char **logdetail);
 
 static void load_validator_library(const char *libname);
-static void shutdown_validator_library(int code, Datum arg);
+static void shutdown_validator_library(void *arg);
 
 static ValidatorModuleState *validator_module_state;
 static const OAuthValidatorCallbacks *ValidatorCallbacks;
@@ -737,6 +737,7 @@ static void
 load_validator_library(const char *libname)
 {
 	OAuthValidatorModuleInit validator_init;
+	MemoryContextCallback *mcb;
 
 	Assert(libname && *libname);
 
@@ -761,15 +762,19 @@ load_validator_library(const char *libname)
 	if (ValidatorCallbacks->startup_cb != NULL)
 		ValidatorCallbacks->startup_cb(validator_module_state);
 
-	before_shmem_exit(shutdown_validator_library, 0);
+	/* Shut down the library before cleaning up its state. */
+	mcb = palloc0(sizeof(*mcb));
+	mcb->func = shutdown_validator_library;
+
+	MemoryContextRegisterResetCallback(CurrentMemoryContext, mcb);
 }
 
 /*
  * Call the validator module's shutdown callback, if one is provided. This is
- * invoked via before_shmem_exit().
+ * invoked during memory context reset.
  */
 static void
-shutdown_validator_library(int code, Datum arg)
+shutdown_validator_library(void *arg)
 {
 	if (ValidatorCallbacks->shutdown_cb != NULL)
 		ValidatorCallbacks->shutdown_cb(validator_module_state);
diff --git a/src/test/modules/oauth_validator/validator.c b/src/test/modules/oauth_validator/validator.c
index bf94f091def..ef9bbb2866f 100644
--- a/src/test/modules/oauth_validator/validator.c
+++ b/src/test/modules/oauth_validator/validator.c
@@ -100,7 +100,7 @@ validator_shutdown(ValidatorModuleState *state)
 {
 	/* Check to make sure our private state still exists. */
 	if (state->private_data != PRIVATE_COOKIE)
-		elog(ERROR, "oauth_validator: private state cookie changed to %p in shutdown",
+		elog(PANIC, "oauth_validator: private state cookie changed to %p in shutdown",
 			 state->private_data);
 }
 
-- 
2.34.1