diff options
author | Sinisa@sinisa.nasamreza.org <> | 2004-03-01 21:54:08 +0200 |
---|---|---|
committer | Sinisa@sinisa.nasamreza.org <> | 2004-03-01 21:54:08 +0200 |
commit | 7f3771bc769a6538ab00aa63d056e9cded4e32b4 (patch) | |
tree | 71c56bd3d5139f19b8dffae10cb503af66535c4d | |
parent | 9f11123f75c9738f11c6904b2a75e2627b9a3930 (diff) | |
download | mariadb-git-7f3771bc769a6538ab00aa63d056e9cded4e32b4.tar.gz |
fix for a bug #2953.
When password was granted with a global grant, then granting
privileges on database level, without password being specified,
will temporary (in memory) set password to ''.
-rw-r--r-- | mysql-test/r/grant.result | 6 | ||||
-rw-r--r-- | mysql-test/t/grant.test | 4 | ||||
-rw-r--r-- | sql/sql_acl.cc | 9 |
3 files changed, 17 insertions, 2 deletions
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index 0b6ebe9b0ad..ffaf2a83b78 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -165,3 +165,9 @@ drop_user3@localhost, drop_user4@localhost; drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost, drop_user4@localhost; drop table t1; +grant usage on *.* to mysqltest_1@localhost identified by "password"; +grant select, update, insert on test.* to mysqltest@localhost; +show grants for mysqltest_1@localhost; +Grants for mysqltest_1@localhost +GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' +drop user mysqltest_1@localhost; diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index ea7d7fa44af..e6b19e86c90 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -125,3 +125,7 @@ drop_user3@localhost, drop_user4@localhost; drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost, drop_user4@localhost; drop table t1; +grant usage on *.* to mysqltest_1@localhost identified by "password"; +grant select, update, insert on test.* to mysqltest@localhost; +show grants for mysqltest_1@localhost; +drop user mysqltest_1@localhost; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 58a6de5e4fc..59a96e28d77 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -829,8 +829,8 @@ static void acl_update_user(const char *user, const char *host, acl_user->x509_subject= (x509_subject ? strdup_root(&mem,x509_subject) : 0); } - - set_user_salt(acl_user, password, password_len); + if (password) + set_user_salt(acl_user, password, password_len); /* search complete: */ break; } @@ -1456,6 +1456,11 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo, store_record(table,record[1]); // Save copy for update if (combo.password.str) // If password given table->field[2]->store(password, password_len, &my_charset_latin1); + else if (!rights && !revoke_grant && thd->lex->ssl_type == SSL_TYPE_NOT_SPECIFIED && + !thd->lex->mqh.bits) + { + DBUG_RETURN(0); + } } /* Update table columns with new privileges */ |