PostgreSQL Source Code git master
ldap_password_func.c
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * Copyright (c) 2022-2025, PostgreSQL Global Development Group
4 *
5 * ldap_password_func.c
6 *
7 * Loadable PostgreSQL module to mutate the ldapbindpasswd. This
8 * implementation just hands back the configured password rot13'd.
9 *
10 *-------------------------------------------------------------------------
11 */
12
13#include "postgres.h"
14
15#include <float.h>
16#include <stdio.h>
17
18#include "fmgr.h"
19#include "libpq/auth.h"
20
22
23void _PG_init(void);
24
25/* hook function */
26static char *rot13_passphrase(char *password);
27
28/*
29 * Module load callback
30 */
31void
33{
35}
36
37static char *
39{
40 size_t size = strlen(pw) + 1;
41
42 char *new_pw = (char *) palloc(size);
43
44 strlcpy(new_pw, pw, size);
45 for (char *p = new_pw; *p; p++)
46 {
47 char c = *p;
48
49 if ((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M'))
50 *p = c + 13;
51 else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z'))
52 *p = c - 13;
53 }
54
55 return new_pw;
56}
PGDLLIMPORT auth_password_hook_typ ldap_password_hook
static char * rot13_passphrase(char *password)
void _PG_init(void)
PG_MODULE_MAGIC
void * palloc(Size size)
Definition: mcxt.c:1317
size_t strlcpy(char *dst, const char *src, size_t siz)
Definition: strlcpy.c:45
char * c
static pg_noinline void Size size
Definition: slab.c:607
static char * password
Definition: streamutil.c:52