PostgreSQL Source Code  git master
ldap_password_func.c
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * Copyright (c) 2022-2024, 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 "libpq/auth.h"
19 #include "libpq/libpq.h"
20 #include "libpq/libpq-be.h"
21 #include "utils/guc.h"
22 
24 
25 void _PG_init(void);
26 void _PG_fini(void);
27 
28 /* hook function */
29 static char *rot13_passphrase(char *password);
30 
31 /*
32  * Module load callback
33  */
34 void
35 _PG_init(void)
36 {
38 }
39 
40 void
41 _PG_fini(void)
42 {
43  /* do nothing yet */
44 }
45 
46 static char *
48 {
49  size_t size = strlen(pw) + 1;
50 
51  char *new_pw = (char *) palloc(size);
52 
53  strlcpy(new_pw, pw, size);
54  for (char *p = new_pw; *p; p++)
55  {
56  char c = *p;
57 
58  if ((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M'))
59  *p = c + 13;
60  else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z'))
61  *p = c - 13;
62  }
63 
64  return new_pw;
65 }
PGDLLIMPORT auth_password_hook_typ ldap_password_hook
static char * rot13_passphrase(char *password)
void _PG_init(void)
PG_MODULE_MAGIC
void _PG_fini(void)
void * palloc(Size size)
Definition: mcxt.c:1316
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:54