Mercurial > dovecot > core-2.2
annotate src/auth/mech-external.c @ 22614:cf66220d281e
doveadm proxy: Don't crash if remote doesn't support log proxying
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sat, 14 Oct 2017 12:54:18 +0300 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
19552
diff
changeset
|
1 /* Copyright (c) 2009-2017 Dovecot authors, see the included COPYING file */ |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "auth-common.h" |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "passdb.h" |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "mech.h" |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "mech-plain-common.h" |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 static void |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 mech_external_auth_continue(struct auth_request *request, |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 const unsigned char *data, size_t data_size) |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 { |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 const char *authzid, *error; |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 authzid = t_strndup(data, data_size); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 if (request->user == NULL) { |
17235
9b095cec9332
auth: Use special AUTH_SUBSYS_DB/MECH parameters as auth_request_log*() subsystem.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
16 auth_request_log_info(request, AUTH_SUBSYS_MECH, |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 "username not known"); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 auth_request_fail(request); |
14735
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
19 return; |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
20 } |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
21 |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
22 /* this call is done simply to put the username through translation |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
23 settings */ |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
24 if (!auth_request_set_username(request, "", &error)) { |
17235
9b095cec9332
auth: Use special AUTH_SUBSYS_DB/MECH parameters as auth_request_log*() subsystem.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
25 auth_request_log_info(request, AUTH_SUBSYS_MECH, |
14735
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
26 "Invalid username"); |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
27 auth_request_fail(request); |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
28 return; |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
29 } |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
30 |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
31 if (*authzid != '\0' && |
1e7c33ce9c16
auth: EXTERNAL mechanism didn't use auth_username_* settings.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
32 !auth_request_set_login_username(request, authzid, &error)) { |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 /* invalid login username */ |
17235
9b095cec9332
auth: Use special AUTH_SUBSYS_DB/MECH parameters as auth_request_log*() subsystem.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
34 auth_request_log_info(request, AUTH_SUBSYS_MECH, |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 "login user: %s", error); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 auth_request_fail(request); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 } else { |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 auth_request_verify_plain(request, "", |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 plain_verify_callback); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 } |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 } |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 static struct auth_request *mech_external_auth_new(void) |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 { |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 struct auth_request *request; |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 pool_t pool; |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 |
17837
569d41d21ec3
auth: Mark memory pools as growing and use the same sizes for all mechanisms.
Timo Sirainen <tss@iki.fi>
parents:
17235
diff
changeset
|
48 pool = pool_alloconly_create(MEMPOOL_GROWING"external_auth_request", 2048); |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 request = p_new(pool, struct auth_request, 1); |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 request->pool = pool; |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 return request; |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 } |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 const struct mech_module mech_external = { |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 "EXTERNAL", |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
9380
diff
changeset
|
57 .flags = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
9380
diff
changeset
|
58 .passdb_need = MECH_PASSDB_NEED_VERIFY_PLAIN, |
9380
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 mech_external_auth_new, |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 mech_generic_auth_initial, |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 mech_external_auth_continue, |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 mech_generic_auth_free |
976a4c9ca6b6
auth: Forgot to add mech-external.c in earlier commit.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 }; |