summaryrefslogtreecommitdiff
path: root/libmysql/libmysql.c
diff options
context:
space:
mode:
authorkostja@oak.local <>2003-07-04 20:52:04 +0400
committerkostja@oak.local <>2003-07-04 20:52:04 +0400
commit1d20b23247e19aa6aa5e309fc47d5c5c3bbfe433 (patch)
tree8b19a2b1b84bfe2fb3f99f403acec7fb0a600501 /libmysql/libmysql.c
parent7df0475847103581798ddacf75dbf634e8f98d0a (diff)
downloadmariadb-git-1d20b23247e19aa6aa5e309fc47d5c5c3bbfe433.tar.gz
Bug fixes for authentication
OLD_PASSWORD made a keyword to allow set password=old_password('abc') constructions.
Diffstat (limited to 'libmysql/libmysql.c')
-rw-r--r--libmysql/libmysql.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 6bc38abb060..8b83343df8f 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -619,16 +619,20 @@ my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
/* write scrambled password according to server capabilities */
if (passwd[0])
{
- /* Write NULL-terminated scrambled password: */
- end= mysql->server_capabilities & CLIENT_SECURE_CONNECTION ?
- scramble(end, mysql->scramble, passwd) :
- scramble_323(end, mysql->scramble_323, passwd,
- (my_bool) (mysql->protocol_version == 9));
+ if (mysql->server_capabilities & CLIENT_SECURE_CONNECTION)
+ {
+ *end++= SCRAMBLE_LENGTH;
+ scramble(end, mysql->scramble, passwd);
+ end+= SCRAMBLE_LENGTH;
+ }
+ else
+ end= scramble_323(end, mysql->scramble_323, passwd,
+ (my_bool) (mysql->protocol_version == 9)) + 1;
}
else
- *end= '\0'; // empty password
+ *end++= '\0'; // empty password
/* Add database if needed */
- end=strmov(end+1,db ? db : "");
+ end= strmov(end, db ? db : "") + 1;
/* Write authentication package */
simple_command(mysql,COM_CHANGE_USER, buff,(ulong) (end-buff),1);