* Exim - an Internet mail transport agent *
*************************************************/
+/* Copyright (c) The Exim Maintainers 2020 - 2023 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include "../exim.h"
#include "plaintext.h"
optionlist auth_plaintext_options[] = {
{ "client_ignore_invalid_base64", opt_bool,
- (void *)(offsetof(auth_plaintext_options_block, client_ignore_invalid_base64)) },
+ OPT_OFF(auth_plaintext_options_block, client_ignore_invalid_base64) },
{ "client_send", opt_stringptr,
- (void *)(offsetof(auth_plaintext_options_block, client_send)) },
+ OPT_OFF(auth_plaintext_options_block, client_send) },
{ "server_prompts", opt_stringptr,
- (void *)(offsetof(auth_plaintext_options_block, server_prompts)) }
+ OPT_OFF(auth_plaintext_options_block, server_prompts) }
};
/* Size of the options list. An extern variable has to be used so that its
{
auth_plaintext_options_block *ob =
(auth_plaintext_options_block *)(ablock->options_block);
-if (ablock->public_name == NULL) ablock->public_name = ablock->name;
-if (ablock->server_condition != NULL) ablock->server = TRUE;
-if (ob->client_send != NULL) ablock->client = TRUE;
+if (!ablock->public_name) ablock->public_name = ablock->name;
+if (ablock->server_condition) ablock->server = TRUE;
+if (ob->client_send) ablock->client = TRUE;
}
/* For interface, see auths/README */
int
-auth_plaintext_server(auth_instance *ablock, uschar *data)
+auth_plaintext_server(auth_instance * ablock, uschar * data)
{
-auth_plaintext_options_block *ob =
+auth_plaintext_options_block * ob =
(auth_plaintext_options_block *)(ablock->options_block);
-const uschar *prompts = ob->server_prompts;
-uschar *clear, *end, *s;
+const uschar * prompts = ob->server_prompts;
+uschar * s;
int number = 1;
-int len, rc;
+int rc;
int sep = 0;
/* Expand a non-empty list of prompt strings */
out as prompts, and get a data item back. If the data item is "*", abandon the
authentication attempt. Otherwise, split it into items as above. */
-while ( (s = string_nextinlist(&prompts, &sep, big_buffer, big_buffer_size))
+while ( (s = string_nextinlist(&prompts, &sep, NULL, 0))
&& expand_nmax < EXPAND_MAXN)
if (number++ > expand_nmax)
if ((rc = auth_prompt(CUS s)) != OK)
(auth_plaintext_options_block *)(ablock->options_block);
const uschar * text = ob->client_send;
const uschar * s;
-BOOL first = TRUE;
int sep = 0;
int auth_var_idx = 0, rc;
int flags = AUTH_ITEM_FIRST;