{"kind": "hook", "major": "18", "item": {"slug": "check_password_hook", "name": "check_password_hook", "name_zh": "check_password_hook", "category": "Authentication and connections", "summary": "Hook to check passwords in CreateRole() and AlterRole()", "aliases": [], "versions": {"10": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_10_STABLE", "label": "10", "major": "10", "channel": "historical", "revision": "f4e8f137bfb08a664c8288824c1e36b5143ac875"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "acb3e7bc99807911910fe71a223ff409aa84351676d5a600da951817ad3f76a9"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/commands/user.c#L50", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "9fc68a5a18c4bb5388cc817d2f3f2fcdc64f2752eaa429f78f54b0b443fb59ec"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/commands/user.c#L362", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "9fc68a5a18c4bb5388cc817d2f3f2fcdc64f2752eaa429f78f54b0b443fb59ec"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:362", "src/backend/commands/user.c:761"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:356\u2013370", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:755\u2013769", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "11": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_11_STABLE", "label": "11", "major": "11", "channel": "historical", "revision": "170e416034ec0231d9e9238f2577eeb76ca8d181"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "acb3e7bc99807911910fe71a223ff409aa84351676d5a600da951817ad3f76a9"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/commands/user.c#L50", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "7aa6e101e573039b4547652ff8e5023b34bef736039a54768fef4f00d1f97136"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/commands/user.c#L362", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "7aa6e101e573039b4547652ff8e5023b34bef736039a54768fef4f00d1f97136"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:362", "src/backend/commands/user.c:761"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:356\u2013370", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:755\u2013769", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "12": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_12_STABLE", "label": "12", "major": "12", "channel": "historical", "revision": "3f302f0ed06f69c5ebd33d4df95895323a3cbef6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "acb3e7bc99807911910fe71a223ff409aa84351676d5a600da951817ad3f76a9"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/commands/user.c#L49", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "4f2eed417a0a43103a1d83819a0f39e4749073ff9ba52ef50c5decba458146e6"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/commands/user.c#L370", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "4f2eed417a0a43103a1d83819a0f39e4749073ff9ba52ef50c5decba458146e6"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:370", "src/backend/commands/user.c:776"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:364\u2013378", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:770\u2013784", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "13": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_13_STABLE", "label": "13", "major": "13", "channel": "historical", "revision": "05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "acb3e7bc99807911910fe71a223ff409aa84351676d5a600da951817ad3f76a9"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/commands/user.c#L49", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "0397346047e5b744c705075f56afc7a76a558672dac179a41505dc880b03cb66"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/commands/user.c#L370", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "0397346047e5b744c705075f56afc7a76a558672dac179a41505dc880b03cb66"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:370", "src/backend/commands/user.c:776"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:364\u2013378", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:770\u2013784", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "14": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_14_STABLE", "label": "14", "major": "14", "channel": "stable", "revision": "fba35c7c28a567839faba867db0808564c0a66db"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "acb3e7bc99807911910fe71a223ff409aa84351676d5a600da951817ad3f76a9"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/commands/user.c#L49", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "c6a692fc7b15efba556b1ca54e055995fe6b2359d2358074e3e47b6bca367c0d"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/commands/user.c#L370", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "c6a692fc7b15efba556b1ca54e055995fe6b2359d2358074e3e47b6bca367c0d"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:370", "src/backend/commands/user.c:776"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:364\u2013378", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:770\u2013784", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "15": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_15_STABLE", "label": "15", "major": "15", "channel": "stable", "revision": "0351991b8e7c7b64382e2f30ce581a8f276590a6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/include/commands/user.h#L23", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "b07cf0ae584d791cba6474bf5e4a5eb63b8a8a07af87786bf6ad86a82a508187"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/commands/user.c#L50", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "16c253691c40cea4dc11a61174e4a94f79a8c592e0f68e07a9149ffb7a299d47"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/commands/user.c#L332", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "16c253691c40cea4dc11a61174e4a94f79a8c592e0f68e07a9149ffb7a299d47"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:332", "src/backend/commands/user.c:685"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:326\u2013340", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:679\u2013693", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "16": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_16_STABLE", "label": "16", "major": "16", "channel": "stable", "revision": "dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/commands/user.c#L92", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "444d24b777e2fd2edca6051179d789efaf0613cc502a55a10ed33a6c9d8131ae"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/commands/user.c#L400", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "444d24b777e2fd2edca6051179d789efaf0613cc502a55a10ed33a6c9d8131ae"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:400", "src/backend/commands/user.c:850"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:394\u2013408", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:844\u2013858", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "17": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_17_STABLE", "label": "17", "major": "17", "channel": "stable", "revision": "163288afd32a448244c8df75b3c33181aadd7f20"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/commands/user.c#L91", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "99ef1d657d0c774f695f511aeccc40fbf5b19fdec0d8fc16359cde73c6f87090"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/commands/user.c#L399", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "99ef1d657d0c774f695f511aeccc40fbf5b19fdec0d8fc16359cde73c6f87090"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:399", "src/backend/commands/user.c:849"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:393\u2013407", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:843\u2013857", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "18": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/user.c#L91", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "53455e7697c69d5fcb687fcc223e11d827b9f8c3d71f8072a67a08189ae610fa"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/user.c#L399", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "53455e7697c69d5fcb687fcc223e11d827b9f8c3d71f8072a67a08189ae610fa"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:399", "src/backend/commands/user.c:849"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:393\u2013407", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:843\u2013857", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "19": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_19_BETA4", "label": "19 Beta 4", "major": "19", "channel": "preview", "revision": "b73d13c32c834a2c8e1c60cb92f79530376cedf1"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/commands/user.c#L92", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "e193f1fbfc7cde9fdf85bb3d5ef8a5b445da8d0f3206acb3536fbdcd0cc31347"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/commands/user.c#L406", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "e193f1fbfc7cde9fdf85bb3d5ef8a5b445da8d0f3206acb3536fbdcd0cc31347"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:406", "src/backend/commands/user.c:856"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:400\u2013414", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:850\u2013864", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "20": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "master", "label": "20 devel", "major": "20", "channel": "devel", "revision": "2c10c2ce4d7bcd57543a49ab402af02a39724e0a"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/commands/user.c#L92", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "e193f1fbfc7cde9fdf85bb3d5ef8a5b445da8d0f3206acb3536fbdcd0cc31347"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/commands/user.c#L406", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "e193f1fbfc7cde9fdf85bb3d5ef8a5b445da8d0f3206acb3536fbdcd0cc31347"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:406", "src/backend/commands/user.c:856"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:400\u2013414", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:850\u2013864", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}}, "content_hash": "a52cdfa1c41379cdfed44c8b1e65fd486ec0e66d0fc026a22fc56b09016e6c16", "imported_at": "2026-09-27T09:57:58.819"}, "snapshot": {"facts": [{"label": "Interface type", "value": "check_password_hook_type"}, {"label": "Header", "value": "src/include/commands/user.h"}, {"label": "Subsystem", "value": "Authentication and connections"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/user.h#L25", "path": "src/include/commands/user.h", "label": "Interface declaration", "sha256": "07915b0338269813ec0931d1403f3b4d9e837d789aeeef73125dee3f6d197eaa"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/user.c#L91", "path": "src/backend/commands/user.c", "label": "Core definition", "sha256": "53455e7697c69d5fcb687fcc223e11d827b9f8c3d71f8072a67a08189ae610fa"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/user.c#L399", "path": "src/backend/commands/user.c", "label": "Call sites", "sha256": "53455e7697c69d5fcb687fcc223e11d827b9f8c3d71f8072a67a08189ae610fa"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/commands/user.c:399", "src/backend/commands/user.c:849"]}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (stmt->role,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build a tuple to insert\n\t */", "title": "Core call context: src/backend/commands/user.c:393\u2013407", "paragraphs": []}, {"code": "\t}\n\n\t/*\n\t * Call the password checking hook if there is one defined\n\t */\n\tif (check_password_hook && password)\n\t\t(*check_password_hook) (rolename,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tget_password_type(password),\n\t\t\t\t\t\t\t\tvalidUntil_datum,\n\t\t\t\t\t\t\t\tvalidUntil_null);\n\n\t/*\n\t * Build an updated tuple, perusing the information just obtained\n\t */", "title": "Core call context: src/backend/commands/user.c:843\u2013857", "paragraphs": []}], "signature": "typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);\nextern PGDLLIMPORT check_password_hook_type check_password_hook;", "description": ["Hook to check passwords in CreateRole() and AlterRole()"]}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}