diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 4d7a821b..ca58fc15 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -385,6 +385,7 @@ cmd_connect(ProfWin* window, const char* const command, gchar** args) // use eval_password if set } else if (account->eval_password) { gboolean res = account_eval_password(account); + ui_resize(); if (res) { conn_status = cl_ev_connect_account(account); free(account->password); diff --git a/src/config/account.c b/src/config/account.c index cf9650f6..76f96bfb 100644 --- a/src/config/account.c +++ b/src/config/account.c @@ -138,13 +138,23 @@ account_eval_password(ProfAccount* account) gchar* stdout_buf = NULL; GError* error = NULL; gint exit_status = 0; + gchar** argv = NULL; - if (!g_spawn_command_line_sync(account->eval_password, &stdout_buf, NULL, &exit_status, &error)) { - log_error("Failed to execute `eval_password` command: %s", error->message); + if (!g_shell_parse_argv(account->eval_password, NULL, &argv, &error)) { + log_error("Failed to parse `eval_password` command: %s", error->message); g_error_free(error); return FALSE; } + if (!g_spawn_sync(NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN, NULL, NULL, &stdout_buf, NULL, &exit_status, &error)) { + log_error("Failed to execute `eval_password` command: %s", error->message); + g_strfreev(argv); + g_error_free(error); + return FALSE; + } + + g_strfreev(argv); + if (WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == 0) { account->password = stdout_buf; g_strstrip(account->password);