{"Entry":{"collection":"hook","key":"ldap_password_hook","name":"ldap_password_hook","aliases":[],"metadata":{"aliases":[],"category":"Authentication and connections","content_hash":"480366d39b4b4c734bdcd1f51ddba0f75f94b0196e8c480d370aefad6c512c3b","derived_content_hash":"bced8d6c37f535394045d7bd1a5c1569d5ee7d2ac8655424bc5b346b2852bb64","imported_at":"2026-09-27T17:57:58.828657+08:00","name":"ldap_password_hook","name_zh":"ldap_password_hook","repair_provenance":{"original_source_revision":"","receipt_sha256":"8f3bec7d47eb1aacd843a74d1d0c00fb63a2f318e1dadee90833b8b1176811ef","repair":"wiki-repair-20261023"},"slug":"ldap_password_hook","source_rev":"wiki-repair-20261023:4272a007345d74543b29c95f1d6e32426df21d28d58c65d3e32e79df1a2abfe7","summary":"hook type for password manglers"}},"Definition":{"Collection":"hook","Key":"ldap_password_hook","SourceDatabase":"center","Version":"18","SourceTable":"hook","SourceKey":"ldap_password_hook","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","Facts":{"description":["hook type for password manglers"],"description_zh":"用于处理密码的钩子类型。","description_zh_html":"\u003cp\u003e用于处理密码的钩子类型。\u003c/p\u003e\u003cp\u003e以下中文为本站依据所列 PostgreSQL 源码注释编译的说明。\u003c/p\u003e\u003ch3\u003e接口声明\u003c/h3\u003e\u003cpre\u003etypedef char *(*auth_password_hook_typ) (char *input);\nextern PGDLLIMPORT auth_password_hook_typ ldap_password_hook;\u003c/pre\u003e\u003ch3\u003e调用位置\u003c/h3\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003esrc/backend/libpq/auth.c:2536\u003c/code\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e核心调用上下文：src/backend/libpq/auth.c:2530–2544\u003c/h3\u003e\u003cpre\u003e\t\t/*\n\t\t * Bind with a pre-defined username/password (if available) for\n\t\t * searching. If none is specified, this turns into an anonymous bind.\n\t\t */\n\t\tr = ldap_simple_bind_s(ldap,\n\t\t\t\t\t\t\t   port-\u0026gt;hba-\u0026gt;ldapbinddn ? port-\u0026gt;hba-\u0026gt;ldapbinddn : \u0026quot;\u0026quot;,\n\t\t\t\t\t\t\t   port-\u0026gt;hba-\u0026gt;ldapbindpasswd ? ldap_password_hook(port-\u0026gt;hba-\u0026gt;ldapbindpasswd) : \u0026quot;\u0026quot;);\n\t\tif (r != LDAP_SUCCESS)\n\t\t{\n\t\t\tereport(LOG,\n\t\t\t\t\t(errmsg(\u0026quot;could not perform initial LDAP bind for ldapbinddn \\\u0026quot;%s\\\u0026quot; on server \\\u0026quot;%s\\\u0026quot;: %s\u0026quot;,\n\t\t\t\t\t\t\tport-\u0026gt;hba-\u0026gt;ldapbinddn ? port-\u0026gt;hba-\u0026gt;ldapbinddn : \u0026quot;\u0026quot;,\n\t\t\t\t\t\t\tserver_name,\n\t\t\t\t\t\t\tldap_err2string(r)),\n\t\t\t\t\t errdetail_for_ldap(ldap)));\u003c/pre\u003e","facts":[{"label":"Interface type","value":"auth_password_hook_typ"},{"label":"Header","value":"src/include/libpq/auth.h"},{"label":"Subsystem","value":"Authentication and connections"},{"label":"Initial value","value":"dummy_ldap_password_mutator"}],"related":[],"release":{"channel":"stable","label":"18","major":"18","ref":"REL_18_STABLE","revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd"},"sections":[{"paragraphs":["src/backend/libpq/auth.c:2536"],"title":"Call sites"},{"code":"\t\t/*\n\t\t * Bind with a pre-defined username/password (if available) for\n\t\t * searching. If none is specified, this turns into an anonymous bind.\n\t\t */\n\t\tr = ldap_simple_bind_s(ldap,\n\t\t\t\t\t\t\t   port-\u003ehba-\u003eldapbinddn ? port-\u003ehba-\u003eldapbinddn : \"\",\n\t\t\t\t\t\t\t   port-\u003ehba-\u003eldapbindpasswd ? ldap_password_hook(port-\u003ehba-\u003eldapbindpasswd) : \"\");\n\t\tif (r != LDAP_SUCCESS)\n\t\t{\n\t\t\tereport(LOG,\n\t\t\t\t\t(errmsg(\"could not perform initial LDAP bind for ldapbinddn \\\"%s\\\" on server \\\"%s\\\": %s\",\n\t\t\t\t\t\t\tport-\u003ehba-\u003eldapbinddn ? port-\u003ehba-\u003eldapbinddn : \"\",\n\t\t\t\t\t\t\tserver_name,\n\t\t\t\t\t\t\tldap_err2string(r)),\n\t\t\t\t\t errdetail_for_ldap(ldap)));","paragraphs":[],"title":"Core call context: src/backend/libpq/auth.c:2530–2544"}],"signature":"typedef char *(*auth_password_hook_typ) (char *input);\nextern PGDLLIMPORT auth_password_hook_typ ldap_password_hook;","sources":[{"label":"Interface declaration","path":"src/include/libpq/auth.h","sha256":"976773a9612d289da53c43129ef0438a57904cdd19ffa2ca3d6d2b00104ec241","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/libpq/auth.h#L49"},{"label":"Core definition","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L156"},{"label":"Call sites","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L2536"}],"translation_provenance":{"inputs":[{"label":"Interface declaration","path":"src/include/libpq/auth.h","sha256":"976773a9612d289da53c43129ef0438a57904cdd19ffa2ca3d6d2b00104ec241","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/libpq/auth.h#L49"},{"label":"Core definition","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L156"},{"label":"Call sites","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L2536"}],"kind":"authored-source-translation","locale":"zh-Hans","source_revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","translated_source_sha256":"837ba4e399bfbe933066934499f177c55228f955369fed0f3fa29ccb3f4288cf","version":"18"},"zh_from":"authored-source-translation"},"ManualEvidence":{"release":{"channel":"stable","label":"18","major":"18","ref":"REL_18_STABLE","revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd"},"sources":[{"label":"Interface declaration","path":"src/include/libpq/auth.h","sha256":"976773a9612d289da53c43129ef0438a57904cdd19ffa2ca3d6d2b00104ec241","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/libpq/auth.h#L49"},{"label":"Core definition","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L156"},{"label":"Call sites","path":"src/backend/libpq/auth.c","sha256":"94252cb1e2c49b0ddb15f6596d0abf8056c84493de07cc81439da4c5b07018f1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/libpq/auth.c#L2536"}]},"MeasuredEvidence":{}},"Text":{"Collection":"hook","Key":"ldap_password_hook","SourceDatabase":"center","Version":"18","Locale":"en","Title":"ldap_password_hook","Summary":"hook type for password manglers","BodyHTML":"\u003cp\u003ehook type for password manglers\u003c/p\u003e","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","ContentHash":"af1517738409d4174958056345112c5c641cff6fa00fa5d637c5673e480910e1","Payload":{"description":["hook type for password manglers"],"related":[],"sections":[{"paragraphs":["src/backend/libpq/auth.c:2536"],"title":"Call sites"},{"code":"\t\t/*\n\t\t * Bind with a pre-defined username/password (if available) for\n\t\t * searching. If none is specified, this turns into an anonymous bind.\n\t\t */\n\t\tr = ldap_simple_bind_s(ldap,\n\t\t\t\t\t\t\t   port-\u003ehba-\u003eldapbinddn ? port-\u003ehba-\u003eldapbinddn : \"\",\n\t\t\t\t\t\t\t   port-\u003ehba-\u003eldapbindpasswd ? ldap_password_hook(port-\u003ehba-\u003eldapbindpasswd) : \"\");\n\t\tif (r != LDAP_SUCCESS)\n\t\t{\n\t\t\tereport(LOG,\n\t\t\t\t\t(errmsg(\"could not perform initial LDAP bind for ldapbinddn \\\"%s\\\" on server \\\"%s\\\": %s\",\n\t\t\t\t\t\t\tport-\u003ehba-\u003eldapbinddn ? port-\u003ehba-\u003eldapbinddn : \"\",\n\t\t\t\t\t\t\tserver_name,\n\t\t\t\t\t\t\tldap_err2string(r)),\n\t\t\t\t\t errdetail_for_ldap(ldap)));","paragraphs":[],"title":"Core call context: src/backend/libpq/auth.c:2530–2544"}]}},"RequestedLocale":"en","Fallback":false,"Versions":["16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
