Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vW9zo-00EKkX-1g for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Dec 2025 09:08:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vW9zm-0018Q5-00 for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Dec 2025 09:08:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vW9zl-0018Px-21 for pgsql-hackers@lists.postgresql.org; Thu, 18 Dec 2025 09:08:26 +0000 Received: from mail-yw1-x1131.google.com ([2607:f8b0:4864:20::1131]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vW9zj-001Nii-1z for pgsql-hackers@lists.postgresql.org; Thu, 18 Dec 2025 09:08:26 +0000 Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-78a712cfbc0so3364527b3.1 for ; Thu, 18 Dec 2025 01:08:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1766048902; x=1766653702; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kr1vptN4fH8/gpUfGERxZapSnkCVBabDAa+knFqOyd8=; b=FI8XVVj00APsTfBz/LgUDOkCXQQD7aVfsV/Up4/eWsijyS0VWkxPXM9yDjEYVguOJB eVKAhkjanuhVPbtBtpG9p9FFmj2N25VqjXlHBBP2g7o1FQXpBjVyFQmGnDGsz89tfi9O 2BybfJ6Aab5hXRV3Z9/QCic7J9QJFe3m3N8qo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766048902; x=1766653702; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kr1vptN4fH8/gpUfGERxZapSnkCVBabDAa+knFqOyd8=; b=jXcD9SQzD15dW5jBwd+2aJ7ZTnSxDxH4jvxxzxLmFtREiAKEkQ8vCIMRrSiiPAvZFy YEQBCzlfHKJgr9GWG85Ol2UehvAjXT/3o2WtyYgpJze4UO1FfGyiC5v7l/WMXR5b+Zww a+QHPVqKtNo6QtVPWm9G89c9JHbliGG9czslXbQ0649MVcf51V+HNUdDdaKg7saszdXW czjoqPJxWVXrpKtuQxRGt3SaqtCHc/LzVPx1YyND0KmqZNTBdFpp3V80SRDUFirrACt3 YG/0sabyAVkbE4sCizdGxkiH/8ZZ24CkvndN7X2MJu4wLvL8gdAOIb3TjB4j3NE9Kl+7 udAQ== X-Forwarded-Encrypted: i=1; AJvYcCXYP5Fw5krKpM3EM6MavHY3sMQEsUJZhUA8UaULXu4LYRbbqXGT75FRkA8LzVbMCo2T6/XVdi/Q52iShxJa@lists.postgresql.org X-Gm-Message-State: AOJu0Yw5lHELVjuqH5a3jGvGAjkldInfltqlPgPrkWNocnaf7PzHMQVA sGt15xr1Fy+wL7clddmzkS/PfmzN5nMrzHSTLvAS4eXBsjcvjPIlG7rW3SgJPS8ILBexXGzsKLe /31fGo06J8vnfcT+nXlTaQdpCMieIyMxgeZEaG6HZ/guxdQdhueMRgbsC0GbGSpFViSIBUdwRm7 0AHnj/u8yie1bQH93t/MafWupqVyRkWA7liaGGHPnvNznPTH3XwAu2wKLsHHzz576QfQP1YbI5a Jfdj+zGwplWe4lt1bqSjQUQ+KKnflic4hPFyDbJkqkKcttFWUWgoxOfgKuvopAP1w4= X-Gm-Gg: AY/fxX4q8OUR5IJE1hShXAHkbQMhFqtrRm1m66HcNptOeCan5yYmjFTQm/zqQjUYztV OxwhDRGDc3mwMuMTqgrQe7VqmEsg/tsAB15KDMKzXw+jcLM2BrsA5xEnG2ap6Jcx1uViJKK48Yt MalA1qs33SE9DQaPTqkCynygx9/sZKAkCLKsTAXGKP8ZWBmT/1LRhefZvnK2JSJGRcqNW6BdzGa EHhNrgwlYBlQebqmaraU/UFcYie44ZefZYpnNFzsqiZcRKy5vRNRnK4iKFL+LoQsjwlI02I/1n+ mi9fgVMdbs505r2KlWs75/K/BvPctmlQbpdtTmhRr88pI4IAsLuoFxJvxG5cilVm1xM= X-Google-Smtp-Source: AGHT+IHzli4PrNciuZhNTpFZrLG41HunV/lHtdVdV0ebygu4I7cGOCrxkMoNDRyPETJGsGbGJpcxCXnXWRb7l0/yRaE= X-Received: by 2002:a05:690c:3608:b0:78d:6716:230 with SMTP id 00721157ae682-78e66d4ee70mr162376017b3.12.1766048901549; Thu, 18 Dec 2025 01:08:21 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Zsolt Parragi Date: Thu, 18 Dec 2025 09:08:10 +0000 X-Gm-Features: AQt7F2qOleZONjfBLqjCGPapeFVxxqmKM5VuQecUVP0Nfl-uC1gmYGE-pUrcDuM Message-ID: Subject: Re: Custom oauth validator options To: VASUKI M Cc: Jacob Champion , PostgreSQL Hackers , david.g.johnston@gmail.com, Robert Haas , myon@debian.org Content-Type: multipart/mixed; boundary="0000000000006f7b1b0646364dcb" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006f7b1b0646364dcb Content-Type: text/plain; charset="UTF-8" > Personally I would go with either (a) or (c), and I was planning to > clean up / improve / share my (c) patch as a second attempt for this > thread, if it didn't receive any replies. I can still do that, so that > we have multiple test implementations. I attached the patch. It modifies one of the existing oauth_validator tests to showcase how it works, but in theory it isn't dependent on oauth. It however requires shared_preload_libraries (that is common for all options), maybe oauth_validator_libraries could imply that? --0000000000006f7b1b0646364dcb Content-Type: application/octet-stream; name="0001-Adding-hooks-to-HBA-parsing-option-c.patch" Content-Disposition: attachment; filename="0001-Adding-hooks-to-HBA-parsing-option-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjb6hkph0 RnJvbSAyOTZhY2RiMTU1MWRiNTIzMDA5Y2U3MjAxZGFhMDNlZjNlMzNmMTgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUaHUsIDE4IERlYyAyMDI1IDA4OjI1OjQ2ICswMDAwClN1YmplY3Q6IFtQQVRD SF0gQWRkaW5nIGhvb2tzIHRvIEhCQSBwYXJzaW5nLCBvcHRpb24gYwoKVGhpcyBjb21taXQgc2hv d2Nhc2VzIGhvdyB3ZSBjYW4gYWRkIGEgZ2VuZXJpYywgbm9uIG9hdXRoIGRlcGVuZGVudCBob29r CnRvIHBhcnNpbmcgaGJhIGVudHJpZXMsIGFuZCBhbHNvIGFkZHMgYSBzaW1wbGUgdGVzdCB0byB0 aGUgZXhpc3RpbmcKb2F1dGhfdmFsaWRhdG9yIHRlc3Qgc3VpdGUuCi0tLQogc3JjL2JhY2tlbmQv bGlicHEvaGJhLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKystLS0tCiBzcmMv aW5jbHVkZS9saWJwcS9oYmEuaCAgICAgICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysr KwogLi4uL21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbCAgIHwgNTEgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci92YWxpZGF0 b3IuYyAgfCA1MyArKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNl cnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBx L2hiYS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKaW5kZXggNGMyNTlmNThkNzcuLjQwOTgw MWVjNmQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9oYmEuYworKysgYi9zcmMvYmFj a2VuZC9saWJwcS9oYmEuYwpAQCAtMTI1LDYgKzEyNSwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgVXNlckF1dGhOYW1lW10gPQogU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihVc2VyQXV0 aE5hbWUpID09IFVTRVJfQVVUSF9MQVNUICsgMSwKIAkJCQkgIlVzZXJBdXRoTmFtZVtdIG11c3Qg bWF0Y2ggdGhlIFVzZXJBdXRoIGVudW0iKTsKIAorLyoKKyAqIEhvb2sgZm9yIHBsdWdpbnMgdG8g ZXh0ZW5kIHBnX2hiYS5jb25mIG9wdGlvbiBwYXJzaW5nLgorICovCitoYmFfcGFyc2Vfb3B0aW9u X2hvb2tfdHlwZSBoYmFfcGFyc2Vfb3B0aW9uX2hvb2sgPSBOVUxMOworCiAKIHN0YXRpYyBMaXN0 ICp0b2tlbml6ZV9leHBhbmRfZmlsZShMaXN0ICp0b2tlbnMsIGNvbnN0IGNoYXIgKm91dGVyX2Zp bGVuYW1lLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmluY19maWxlbmFtZSwgaW50IGVsZXZlbCwK QEAgLTI1MDcsMTUgKzI1MTIsMjYgQEAgcGFyc2VfaGJhX2F1dGhfb3B0KGNoYXIgKm5hbWUsIGNo YXIgKnZhbCwgSGJhTGluZSAqaGJhbGluZSwKIAl9CiAJZWxzZQogCXsKLQkJZXJlcG9ydChlbGV2 ZWwsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9FUlJPUiksCi0JCQkJIGVycm1z ZygidW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uIG9wdGlvbiBuYW1lOiBcIiVzXCIiLAotCQkJ CQkJbmFtZSksCi0JCQkJIGVycmNvbnRleHQoImxpbmUgJWQgb2YgY29uZmlndXJhdGlvbiBmaWxl IFwiJXNcIiIsCi0JCQkJCQkJbGluZV9udW0sIGZpbGVfbmFtZSkpKTsKLQkJKmVycl9tc2cgPSBw c3ByaW50ZigidW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uIG9wdGlvbiBuYW1lOiBcIiVzXCIi LAotCQkJCQkJCW5hbWUpOwotCQlyZXR1cm4gZmFsc2U7CisJCWJvb2wJCWhhbmRsZWQgPSBmYWxz ZTsKKworCQlpZiAoaGJhX3BhcnNlX29wdGlvbl9ob29rKQorCQl7CisJCQloYW5kbGVkID0gKCpo YmFfcGFyc2Vfb3B0aW9uX2hvb2spIChuYW1lLCB2YWwsIGhiYWxpbmUsCisJCQkJCQkJCQkJCQll bGV2ZWwsIGVycl9tc2cpOworCQl9CisKKwkJaWYgKCFoYW5kbGVkKQorCQl7CisJCQllcmVwb3J0 KGVsZXZlbCwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9FUlJPUiksCisJCQkJ CSBlcnJtc2coInVucmVjb2duaXplZCBhdXRoZW50aWNhdGlvbiBvcHRpb24gbmFtZTogXCIlc1wi IiwKKwkJCQkJCQluYW1lKSwKKwkJCQkJIGVycmNvbnRleHQoImxpbmUgJWQgb2YgY29uZmlndXJh dGlvbiBmaWxlIFwiJXNcIiIsCisJCQkJCQkJCWxpbmVfbnVtLCBmaWxlX25hbWUpKSk7CisJCQkq ZXJyX21zZyA9IHBzcHJpbnRmKCJ1bnJlY29nbml6ZWQgYXV0aGVudGljYXRpb24gb3B0aW9uIG5h bWU6IFwiJXNcIiIsCisJCQkJCQkJCW5hbWUpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAJfQog CXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmggYi9z cmMvaW5jbHVkZS9saWJwcS9oYmEuaAppbmRleCA3YjkzYmE0YTcwOS4uYmQ0NjU4YzcyYzggMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2hiYS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBx L2hiYS5oCkBAIC0xNzIsNiArMTcyLDM3IEBAIHR5cGVkZWYgc3RydWN0IFRva2VuaXplZEF1dGhM aW5lCiAvKiBhdm9pZCBpbmNsdWRpbmcgbGlicHEvbGlicHEtYmUuaCBoZXJlICovCiB0eXBlZGVm IHN0cnVjdCBQb3J0IFBvcnQ7CiAKKy8qCisgKiBIb29rIGZvciBwbHVnaW5zIHRvIGV4dGVuZCBw Z19oYmEuY29uZiBvcHRpb24gcGFyc2luZy4KKyAqCisgKiBUaGlzIGhvb2sgaXMgY2FsbGVkIGJ5 IHBhcnNlX2hiYV9hdXRoX29wdCgpIHdoZW4gaXQgZW5jb3VudGVycyBhbiBvcHRpb24KKyAqIG5h bWUgdGhhdCBpdCBkb2Vzbid0IHJlY29nbml6ZS4gUGx1Z2lucyBjYW4gdXNlIHRoaXMgdG8gcGFy c2UgY3VzdG9tCisgKiBhdXRoZW50aWNhdGlvbi4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBu YW1lICAgICAtIFRoZSBvcHRpb24gbmFtZSBiZWluZyBwYXJzZWQgKGUuZy4sICJjdXN0b21fb3B0 aW9uIikKKyAqICAgdmFsICAgICAgLSBUaGUgb3B0aW9uIHZhbHVlIChtYXkgYmUgTlVMTCBmb3Ig Ym9vbGVhbi1zdHlsZSBvcHRpb25zKQorICogICBoYmFsaW5lICAtIFRoZSBIYmFMaW5lIHN0cnVj dHVyZSBiZWluZyBwb3B1bGF0ZWQuIFBsdWdpbnMgc2hvdWxkIG5vdAorICogICAgICAgICAgICAg IG1vZGlmeSBzdGFuZGFyZCBmaWVsZHMsIGJ1dCBjYW4gdXNlIHRoaXMgdG8gY2hlY2sgYXV0aF9t ZXRob2QsCisgKiAgICAgICAgICAgICAgY29ubnR5cGUsIGV0Yy4gdG8gdmFsaWRhdGUgb3B0aW9u IGFwcGxpY2FiaWxpdHkuCisgKiAgIGVsZXZlbCAgIC0gRXJyb3IgbGV2ZWwgZm9yIHJlcG9ydGlu ZyAoTE9HLCBFUlJPUiwgZXRjLikKKyAqICAgZXJyX21zZyAgLSBPdXRwdXQgcGFyYW1ldGVyIGZv ciBlcnJvciBtZXNzYWdlcy4gU2V0IHRoaXMgdG8gYSBwYWxsb2MnZAorICogICAgICAgICAgICAg IHN0cmluZyBpZiByZXR1cm5pbmcgZmFsc2UgZHVlIHRvIGEgdmFsaWRhdGlvbiBlcnJvci4KKyAq CisgKiBSZXR1cm4gdmFsdWU6CisgKiAgIHRydWUgIC0gVGhlIGhvb2sgcmVjb2duaXplZCBhbmQg c3VjY2Vzc2Z1bGx5IGhhbmRsZWQgdGhpcyBvcHRpb24uCisgKiAgIGZhbHNlIC0gVGhlIGhvb2sg ZG9lc24ndCByZWNvZ25pemUgdGhpcyBvcHRpb24sIG9yIGVuY291bnRlcmVkIGFuIGVycm9yLgor ICogICAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycmVkLCB0aGUgaG9vayBzaG91bGQgc2V0ICpl cnJfbXNnIGFuZC9vciBjYWxsCisgKiAgICAgICAgICAgZXJlcG9ydCgpLgorICovCit0eXBlZGVm IGJvb2wgKCpoYmFfcGFyc2Vfb3B0aW9uX2hvb2tfdHlwZSkgKGNvbnN0IGNoYXIgKm5hbWUsCisJ CQkJCQkJCQkJCWNvbnN0IGNoYXIgKnZhbCwKKwkJCQkJCQkJCQkJSGJhTGluZSAqaGJhbGluZSwK KwkJCQkJCQkJCQkJaW50IGVsZXZlbCwKKwkJCQkJCQkJCQkJY2hhciAqKmVycl9tc2cpOworCitl eHRlcm4gUEdETExJTVBPUlQgaGJhX3BhcnNlX29wdGlvbl9ob29rX3R5cGUgaGJhX3BhcnNlX29w dGlvbl9ob29rOworCiBleHRlcm4gYm9vbCBsb2FkX2hiYSh2b2lkKTsKIGV4dGVybiBib29sIGxv YWRfaWRlbnQodm9pZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGJhX2F1dGhuYW1lKFVzZXJBdXRo IGF1dGhfbWV0aG9kKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL3QvMDAyX2NsaWVudC5wbCBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3Qv MDAyX2NsaWVudC5wbAppbmRleCBlNmM5MWZjOTExYy4uNjU3NmQ2ZTQxZTAgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAyX2NsaWVudC5wbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwKQEAgLTI5LDYg KzI5LDggQEAgJG5vZGUtPmluaXQ7CiAkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfY29ubmVjdGlvbnMgPSBhbGxcbiIpOwogJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAogCSJvYXV0aF92YWxpZGF0b3JfbGlicmFyaWVzID0gJ3ZhbGlkYXRvcidc biIpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJzaGFyZWRfcHJl bG9hZF9saWJyYXJpZXMgPSAndmFsaWRhdG9yJ1xuIik7CiAjIE5lZWRlZCB0byBpbnNwZWN0IHBv c3RtYXN0ZXIgbG9nIGFmdGVyIGNvbm5lY3Rpb24gZmFpbHVyZToKICRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIiKTsKICRub2Rl LT5zdGFydDsKQEAgLTExNSw2ICsxMTcsNTUgQEAgdGVzdCgKIAlleHBlY3RlZF9zdGRvdXQgPT4g cXIvY29ubmVjdGlvbiBzdWNjZWVkZWQvLAogCWxvZ19saWtlID0+IFtxci9vYXV0aF92YWxpZGF0 b3I6IHRva2VuPSJteS10b2tlbiIsIHJvbGU9IiR1c2VyIi9dKTsKIAorIyBUZXN0IGN1c3RvbSBI QkEgb3B0aW9uIHBhcnNpbmcgaG9vaworbXkgJGxvZ19zdGFydF9jdXN0b20gPSAtcyAkbm9kZS0+ bG9nZmlsZTsKK3VubGluaygkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJyk7Ciskbm9k ZS0+YXBwZW5kX2NvbmYoCisJJ3BnX2hiYS5jb25mJywgcXF7Citsb2NhbCBhbGwgdGVzdCBvYXV0 aCBpc3N1ZXI9IiRpc3N1ZXIiIHNjb3BlPSIkc2NvcGUiIHRlc3RfY3VzdG9tX2NsYWltPSJteV9j dXN0b21fdmFsdWUiCit9KTsKKyRub2RlLT5yZWxvYWQ7Ciskbm9kZS0+d2FpdF9mb3JfbG9nKHFy L3JlbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGVzLywgJGxvZ19zdGFydF9jdXN0b20pOworCisk bm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL29hdXRoX3ZhbGlkYXRvcjogcGFyc2VkIGN1c3RvbSBI QkEgb3B0aW9uIHRlc3RfY3VzdG9tX2NsYWltPSJteV9jdXN0b21fdmFsdWUiLywKKwkkbG9nX3N0 YXJ0X2N1c3RvbSk7CisKK3Rlc3QoCisJImN1c3RvbSBIQkEgb3B0aW9uIGlzIHBhcnNlZCBhbmQg dXNlZCIsCisJZmxhZ3MgPT4gWworCQkiLS10b2tlbiIsICJ0ZXN0LXRva2VuIiwKKwkJIi0tZXhw ZWN0ZWQtdXJpIiwgIiRpc3N1ZXIvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iLAor CQkiLS1leHBlY3RlZC1zY29wZSIsICRzY29wZSwKKwldLAorCWV4cGVjdGVkX3N0ZG91dCA9PiBx ci9jb25uZWN0aW9uIHN1Y2NlZWRlZC8sCisJbG9nX2xpa2UgPT4gW3FyL29hdXRoX3ZhbGlkYXRv cjogY3VzdG9tX2NsYWltPSJteV9jdXN0b21fdmFsdWUiL10pOworCisjIFRlc3QgdGhhdCB1bmtu b3duIEhCQSBvcHRpb25zIHN0aWxsIGZhaWwKK215ICRsb2dfc3RhcnRfdW5rbm93biA9IC1zICRu b2RlLT5sb2dmaWxlOwordW5saW5rKCRub2RlLT5kYXRhX2RpciAuICcvcGdfaGJhLmNvbmYnKTsK KyRub2RlLT5hcHBlbmRfY29uZigKKwkncGdfaGJhLmNvbmYnLCBxcXsKK2xvY2FsIGFsbCB0ZXN0 IG9hdXRoIGlzc3Vlcj0iJGlzc3VlciIgc2NvcGU9IiRzY29wZSIgdW5rbm93bl9vcHRpb249InZh bHVlIgorfSk7Ciskbm9kZS0+cmVsb2FkOworJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRp bmcgY29uZmlndXJhdGlvbiBmaWxlcy8sICRsb2dfc3RhcnRfdW5rbm93bik7CisKKyMgQ2hlY2sg dGhhdCB0aGUgc2VydmVyIGxvZ2dlZCB0aGUgZXJyb3IgYWJvdXQgdGhlIHVua25vd24gb3B0aW9u Ciskbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL3VucmVjb2duaXplZCBhdXRoZW50aWNhdGlvbiBv cHRpb24gbmFtZTogInVua25vd25fb3B0aW9uIi8sCisJJGxvZ19zdGFydF91bmtub3duKTsKK3Bh c3MoInVua25vd24gSEJBIG9wdGlvbiBpcyByZWplY3RlZCIpOworCisjIFJlc3RvcmUgd29ya2lu ZyBjb25maWd1cmF0aW9uCit1bmxpbmsoJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZicp OworJG5vZGUtPmFwcGVuZF9jb25mKAorCSdwZ19oYmEuY29uZicsIHFxeworbG9jYWwgYWxsIHRl c3Qgb2F1dGggaXNzdWVyPSIkaXNzdWVyIiBzY29wZT0iJHNjb3BlIgorfSk7Ciskbm9kZS0+cmVs b2FkOworJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxl cy8pOworCiBpZiAoJEVOVnt3aXRoX2xpYmN1cmx9IG5lICd5ZXMnKQogewogCSMgbGlicHEgc2hv dWxkIGhlbHAgdXNlcnMgb3V0IGlmIG5vIE9BdXRoIHN1cHBvcnQgaXMgYnVpbHQgaW4uCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci92YWxpZGF0b3IuYyBiL3Ny Yy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3ZhbGlkYXRvci5jCmluZGV4IDQyYjY5NjQ2 ZmJiLi4wMTE1ZjIyOGNlYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvdmFsaWRhdG9yLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv dmFsaWRhdG9yLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImxpYnBxL2hiYS5oIgogI2luY2x1ZGUgImxpYnBx L29hdXRoLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CkBAIC00MSw2ICs0Miw1MCBAQCBzdGF0aWMgY29uc3QgT0F1dGhWYWxpZGF0b3JDYWxsYmFja3Mg dmFsaWRhdG9yX2NhbGxiYWNrcyA9IHsKIHN0YXRpYyBjaGFyICphdXRobl9pZCA9IE5VTEw7CiBz dGF0aWMgYm9vbCBhdXRob3JpemVfdG9rZW5zID0gdHJ1ZTsKIAorc3RhdGljIGNoYXIgKmN1c3Rv bV9jbGFpbSA9IE5VTEw7CisKK3N0YXRpYyBoYmFfcGFyc2Vfb3B0aW9uX2hvb2tfdHlwZSBwcmV2 X2hiYV9wYXJzZV9vcHRpb25faG9vayA9IE5VTEw7CisKK3N0YXRpYyBib29sCit2YWxpZGF0b3Jf aGJhX3BhcnNlX29wdGlvbihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWwsCisJCQkJ CQkgICBIYmFMaW5lICpoYmFsaW5lLCBpbnQgZWxldmVsLCBjaGFyICoqZXJyX21zZykKK3sKKwlp bnQJCQlsaW5lX251bSA9IGhiYWxpbmUtPmxpbmVudW1iZXI7CisJY2hhcgkgICAqZmlsZV9uYW1l ID0gaGJhbGluZS0+c291cmNlZmlsZTsKKworCWlmIChwcmV2X2hiYV9wYXJzZV9vcHRpb25faG9v aykKKwl7CisJCWlmICgoKnByZXZfaGJhX3BhcnNlX29wdGlvbl9ob29rKSAobmFtZSwgdmFsLCBo YmFsaW5lLAorCQkJCQkJCQkJCSAgIGVsZXZlbCwgZXJyX21zZykpCisJCQlyZXR1cm4gdHJ1ZTsK Kwl9CisKKwlpZiAoc3RyY21wKG5hbWUsICJ0ZXN0X2N1c3RvbV9jbGFpbSIpID09IDApCisJewor CQlpZiAodmFsID09IE5VTEwgfHwgdmFsWzBdID09ICdcMCcpCisJCXsKKwkJCWVyZXBvcnQoZWxl dmVsLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR19GSUxFX0VSUk9SKSwKKwkJCQkJIGVy cm1zZygidGVzdF9jdXN0b21fY2xhaW0gcmVxdWlyZXMgYSB2YWx1ZSIpLAorCQkJCQkgZXJyY29u dGV4dCgibGluZSAlZCBvZiBjb25maWd1cmF0aW9uIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkJbGlu ZV9udW0sIGZpbGVfbmFtZSkpKTsKKwkJCSplcnJfbXNnID0gcHN0cmR1cCgidGVzdF9jdXN0b21f Y2xhaW0gcmVxdWlyZXMgYSB2YWx1ZSIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWYg KGN1c3RvbV9jbGFpbSkKKwkJCXBmcmVlKGN1c3RvbV9jbGFpbSk7CisJCWN1c3RvbV9jbGFpbSA9 IHBzdHJkdXAodmFsKTsKKworCQllbG9nKExPRywgIm9hdXRoX3ZhbGlkYXRvcjogcGFyc2VkIGN1 c3RvbSBIQkEgb3B0aW9uIHRlc3RfY3VzdG9tX2NsYWltPVwiJXNcIiIsCisJCQkgY3VzdG9tX2Ns YWltKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qLS0t CiAgKiBFeHRlbnNpb24gZW50cnkgcG9pbnQuIFNldHMgdXAgR1VDcyBmb3IgdXNlIGJ5IHRlc3Rz OgogICoKQEAgLTU1LDYgKzEwMCw4IEBAIHN0YXRpYyBib29sIGF1dGhvcml6ZV90b2tlbnMgPSB0 cnVlOwogdm9pZAogX1BHX2luaXQodm9pZCkKIHsKKwllbG9nKExPRywgIm9hdXRoX3ZhbGlkYXRv cjogX1BHX2luaXQoKSBjYWxsZWQsIGluc3RhbGxpbmcgSEJBIHBhcnNlIG9wdGlvbiBob29rIik7 CisKIAlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgib2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lk IiwKIAkJCQkJCQkgICAiQXV0aGVudGljYXRlZCBpZGVudGl0eSB0byB1c2UgZm9yIGZ1dHVyZSBj b25uZWN0aW9ucyIsCiAJCQkJCQkJICAgTlVMTCwKQEAgLTczLDYgKzEyMCw5IEBAIF9QR19pbml0 KHZvaWQpCiAJCQkJCQkJIE5VTEwsIE5VTEwsIE5VTEwpOwogCiAJTWFya0dVQ1ByZWZpeFJlc2Vy dmVkKCJvYXV0aF92YWxpZGF0b3IiKTsKKworCXByZXZfaGJhX3BhcnNlX29wdGlvbl9ob29rID0g aGJhX3BhcnNlX29wdGlvbl9ob29rOworCWhiYV9wYXJzZV9vcHRpb25faG9vayA9IHZhbGlkYXRv cl9oYmFfcGFyc2Vfb3B0aW9uOwogfQogCiAvKgpAQCAtMTMzLDYgKzE4Myw5IEBAIHZhbGlkYXRl X3Rva2VuKGNvbnN0IFZhbGlkYXRvck1vZHVsZVN0YXRlICpzdGF0ZSwKIAkJIE15UHJvY1BvcnQt PmhiYS0+b2F1dGhfaXNzdWVyLAogCQkgTXlQcm9jUG9ydC0+aGJhLT5vYXV0aF9zY29wZSk7CiAK KwlpZiAoY3VzdG9tX2NsYWltKQorCQllbG9nKExPRywgIm9hdXRoX3ZhbGlkYXRvcjogY3VzdG9t X2NsYWltPVwiJXNcIiIsIGN1c3RvbV9jbGFpbSk7CisKIAlyZXMtPmF1dGhvcml6ZWQgPSBhdXRo b3JpemVfdG9rZW5zOwogCWlmIChhdXRobl9pZCkKIAkJcmVzLT5hdXRobl9pZCA9IHBzdHJkdXAo YXV0aG5faWQpOwotLSAKMi40My4wCgo= --0000000000006f7b1b0646364dcb--