summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/auth/dialog.c17
-rw-r--r--sql/sys_vars.h8
2 files changed, 13 insertions, 12 deletions
diff --git a/plugin/auth/dialog.c b/plugin/auth/dialog.c
index b7c65b3d601..54f88dd9b4e 100644
--- a/plugin/auth/dialog.c
+++ b/plugin/auth/dialog.c
@@ -1,15 +1,15 @@
/* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; version 2 of the
License.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
@@ -181,7 +181,7 @@ mysql_declare_plugin_end;
To support all this variety, the dialog plugin has a callback function
"authentication_dialog_ask". If the client has a function of this name
dialog plugin will use it for communication with the user. Otherwise
- a default gets() based implementation will be used.
+ a default fgets() based implementation will be used.
*/
/**
@@ -208,12 +208,15 @@ static mysql_authentication_dialog_ask_t ask;
static char *builtin_ask(MYSQL *mysql __attribute__((unused)),
int type __attribute__((unused)),
const char *prompt,
- char *buf, int buf_len __attribute__((unused)))
+ char *buf, int buf_len)
{
+ char *ptr;
fputs(prompt, stdout);
fputc(' ', stdout);
- if (gets(buf) == 0)
- return 0;
+ if (fgets(buf, buf_len, stdin) == NULL)
+ return NULL;
+ if ((ptr= strchr(buf, '\n')))
+ *ptr= 0;
return buf;
}
diff --git a/sql/sys_vars.h b/sql/sys_vars.h
index 89e2bdfdf60..e16bd3c5330 100644
--- a/sql/sys_vars.h
+++ b/sql/sys_vars.h
@@ -458,12 +458,10 @@ class Sys_var_proxy_user: public sys_var
public:
Sys_var_proxy_user(const char *name_arg,
const char *comment, enum charset_enum is_os_charset_arg)
- : sys_var(&all_sys_vars, name_arg, comment,
+ : sys_var(&all_sys_vars, name_arg, comment,
sys_var::READONLY+sys_var::ONLY_SESSION, 0, -1,
- NO_ARG, SHOW_CHAR, (intptr)NULL,
- 0, VARIABLE_NOT_IN_BINLOG,
- 0, 0,
- 0, 0, PARSE_NORMAL)
+ NO_ARG, SHOW_CHAR, 0, NULL, VARIABLE_NOT_IN_BINLOG,
+ NULL, NULL, 0, NULL, PARSE_NORMAL)
{
is_os_charset= is_os_charset_arg == IN_FS_CHARSET;
option.var_type= GET_STR;