#if defined(PASSDB_CHECKPASSWORD) || defined(USERDB_CHECKPASSWORD)
+#include "var-expand.h"
#include "db-checkpassword.h"
static void env_put_extra_fields(const char *extra_fields)
}
}
+const char *
+checkpassword_get_cmd(struct auth_request *request, const char *args,
+ const char *checkpassword_reply_path)
+{
+ string_t *str;
+
+ str = t_str_new(256);
+ var_expand(str, args,
+ auth_request_get_var_expand_table(request, NULL));
+ return t_strconcat(str_c(str), " ", checkpassword_reply_path, NULL);
+}
+
void checkpassword_child_input(struct chkpw_auth_request *request)
{
unsigned char buf[1024];
checkpassword_sigchld_handler(const struct child_wait_status *child_wait_status,
struct chkpw_auth_request *request);
void checkpassword_setup_env(struct auth_request *request);
+const char *
+checkpassword_get_cmd(struct auth_request *request, const char *args,
+ const char *checkpassword_reply_path);
+
void checkpassword_child_input(struct chkpw_auth_request *request);
void checkpassword_child_output(struct chkpw_auth_request *request);
"dup2() failed: %m");
} else {
checkpassword_setup_env(request);
- /* very simple argument splitting. */
- cmd = t_strconcat(module->checkpassword_path, " ",
- module->checkpassword_reply_path, NULL);
+ cmd = checkpassword_get_cmd(request, module->checkpassword_path,
+ module->checkpassword_reply_path);
auth_request_log_debug(request, "checkpassword",
"execute: %s", cmd);
+ /* very simple argument splitting. */
args = t_strsplit(cmd, " ");
execv_const(args[0], args);
}
handle this. */
env_put("AUTHORIZED=1");
checkpassword_setup_env(request);
- /* very simple argument splitting. */
- cmd = t_strconcat(module->checkpassword_path, " ",
- module->checkpassword_reply_path, NULL);
+ cmd = checkpassword_get_cmd(request, module->checkpassword_path,
+ module->checkpassword_reply_path);
auth_request_log_debug(request, "userdb-checkpassword",
"execute: %s", cmd);
+ /* very simple argument splitting. */
args = t_strsplit(cmd, " ");
execv_const(args[0], args);
}