mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug #48872 : Privileges for stored functions ignored if function name
is mixed case Transcode the procedure name to lowercase when searching for it in the hash. This is the missing part of the fix for bug #41049.
This commit is contained in:
@ -2280,14 +2280,17 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
|
||||
const char *host,const char* ip,
|
||||
const char *db,
|
||||
const char *user, const char *tname,
|
||||
bool exact)
|
||||
bool exact, bool name_tolower)
|
||||
{
|
||||
char helping [NAME_LEN*2+USERNAME_LENGTH+3];
|
||||
char helping [NAME_LEN*2+USERNAME_LENGTH+3], *name_ptr;
|
||||
uint len;
|
||||
GRANT_NAME *grant_name,*found=0;
|
||||
HASH_SEARCH_STATE state;
|
||||
|
||||
len = (uint) (strmov(strmov(strmov(helping,user)+1,db)+1,tname)-helping)+ 1;
|
||||
name_ptr= strmov(strmov(helping, user) + 1, db) + 1;
|
||||
len = (uint) (strmov(name_ptr, tname) - helping) + 1;
|
||||
if (name_tolower)
|
||||
my_casedn_str(files_charset_info, name_ptr);
|
||||
for (grant_name= (GRANT_NAME*) hash_first(name_hash, (byte*) helping,
|
||||
len, &state);
|
||||
grant_name ;
|
||||
@ -2320,7 +2323,7 @@ routine_hash_search(const char *host, const char *ip, const char *db,
|
||||
{
|
||||
return (GRANT_TABLE*)
|
||||
name_hash_search(proc ? &proc_priv_hash : &func_priv_hash,
|
||||
host, ip, db, user, tname, exact);
|
||||
host, ip, db, user, tname, exact, TRUE);
|
||||
}
|
||||
|
||||
|
||||
@ -2329,7 +2332,7 @@ table_hash_search(const char *host, const char *ip, const char *db,
|
||||
const char *user, const char *tname, bool exact)
|
||||
{
|
||||
return (GRANT_TABLE*) name_hash_search(&column_priv_hash, host, ip, db,
|
||||
user, tname, exact);
|
||||
user, tname, exact, FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user