From ee27ad74b3d32ba7feaa727aa4e20b692b0e1cca Mon Sep 17 00:00:00 2001 From: Rucha Deodhar Date: Mon, 13 Jul 2020 14:19:18 +0530 Subject: MDEV-23082: ER_TABLEACCESS_DENIED_ERROR error message is truncated, and inaccurately The list of all privileges is 118 characters wide. However, the format of error message was: "%-.32s command denied to user '%s'@'%s' for table '%-.192s'". get_length() sets the maximum width to 32 characters. Hence, eventually, only first 32 characters of list of privilege are stored. Fix: Changing the format to "%-.118..." so that get_length() sets width to 118. Hence, all 118 characters of the list of privilege are stored. --- mysql-test/r/grant.result | 20 ++++++++++++++++++++ mysql-test/t/grant.test | 31 +++++++++++++++++++++++++++++++ sql/share/errmsg-utf8.txt | 38 +++++++++++++++++++------------------- 3 files changed, 70 insertions(+), 19 deletions(-) diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index ca9eef211f4..bd8e8715dff 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -2646,3 +2646,23 @@ GRANTEE '觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻'@'localhost' DROP USER 觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻@localhost; SET SQL_MODE=DEFAULT; +# +# 10.1 TEST +# +# MDEV-23082: ER_TABLEACCESS_DENIED_ERROR error message is truncated, and +# inaccurately +# +CREATE USER foo; +CREATE DATABASE db; +CREATE TABLE db.t (a INT); +GRANT ALL ON db.t TO foo; +ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER command denied to user 'foo'@'localhost' for table 't' +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES, +INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo; +ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER command denied to user 'foo'@'localhost' for table 't' +DROP USER foo; +DROP TABLE db.t; +DROP DATABASE db; +# +# END OF 10.1 TEST +# diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index d50d60206e1..f596492d168 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -2305,3 +2305,34 @@ SELECT * FROM INFORMATION_SCHEMA.user_privileges WHERE GRANTEE LIKE "'abcdefghij SELECT GRANTEE FROM INFORMATION_SCHEMA.user_privileges WHERE GRANTEE LIKE '%觻%'; DROP USER 觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻_觻觻觻觻觻觻觻觻觻觻@localhost; SET SQL_MODE=DEFAULT; + +--echo # +--echo # 10.1 TEST +--echo # +--echo # MDEV-23082: ER_TABLEACCESS_DENIED_ERROR error message is truncated, and +--echo # inaccurately +--echo # + +CREATE USER foo; +CREATE DATABASE db; +CREATE TABLE db.t (a INT); + +--connect (con1,localhost,foo,,) + +--error ER_TABLEACCESS_DENIED_ERROR +GRANT ALL ON db.t TO foo; + +--error ER_TABLEACCESS_DENIED_ERROR +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES, +INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo; + +--connection default +--disconnect con1 + +DROP USER foo; +DROP TABLE db.t; +DROP DATABASE db; + +--echo # +--echo # END OF 10.1 TEST +--echo # diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index c5e83062f0f..993433c04b0 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -3151,25 +3151,25 @@ ER_NONEXISTING_GRANT 42000 swe "Det finns inget privilegium definierat för användare '%-.48s' på '%-.64s'" ukr "Повноважень не визначено для користувача '%-.48s' з хосту '%-.64s'" ER_TABLEACCESS_DENIED_ERROR 42000 - cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro tabulku '%-.192s'" - dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for tabellen '%-.192s'" - nla "%-.32s commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'" - eng "%-.32s command denied to user '%s'@'%s' for table '%-.192s'" - jps "コマンド %-.32s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません", - est "%-.32s käsk ei ole lubatud kasutajale '%s'@'%s' tabelis '%-.192s'" - fre "La commande '%-.32s' est interdite à l'utilisateur: '%s'@'%s' sur la table '%-.192s'" - ger "%-.32s Befehl nicht erlaubt für Benutzer '%s'@'%s' auf Tabelle '%-.192s'" - hun "%-.32s parancs a '%s'@'%s' felhasznalo szamara nem engedelyezett a '%-.192s' tablaban" - ita "Comando %-.32s negato per l'utente: '%s'@'%s' sulla tabella '%-.192s'" - jpn "コマンド %-.32s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません" - kor "'%-.32s' 명령은 다음 사용자에게 거부되었습니다. : '%s'@'%s' for 테이블 '%-.192s'" - por "Comando '%-.32s' negado para o usuário '%s'@'%s' na tabela '%-.192s'" - rum "Comanda %-.32s interzisa utilizatorului: '%s'@'%s' pentru tabela '%-.192s'" - rus "Команда %-.32s запрещена пользователю '%s'@'%s' для таблицы '%-.192s'" - serbian "%-.32s komanda zabranjena za korisnika '%s'@'%s' za tabelu '%-.192s'" - spa "%-.32s comando negado para usuario: '%s'@'%s' para tabla '%-.192s'" - swe "%-.32s ej tillåtet för '%s'@'%s' för tabell '%-.192s'" - ukr "%-.32s команда заборонена користувачу: '%s'@'%s' у таблиці '%-.192s'" + cze "%-.118s příkaz nepřístupný pro uživatele: '%s'@'%s' pro tabulku '%-.192s'" + dan "%-.118s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for tabellen '%-.192s'" + nla "%-.118s commando geweigerd voor gebruiker: '%s'@'%s' voor tabel '%-.192s'" + eng "%-.118s command denied to user '%s'@'%s' for table '%-.192s'" + jps "コマンド %-.118s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません", + est "%-.118s käsk ei ole lubatud kasutajale '%s'@'%s' tabelis '%-.192s'" + fre "La commande '%-.118s' est interdite à l'utilisateur: '%s'@'%s' sur la table '%-.192s'" + ger "%-.118s Befehl nicht erlaubt für Benutzer '%s'@'%s' auf Tabelle '%-.192s'" + hun "%-.118s parancs a '%s'@'%s' felhasznalo szamara nem engedelyezett a '%-.192s' tablaban" + ita "Comando %-.118s negato per l'utente: '%s'@'%s' sulla tabella '%-.192s'" + jpn "コマンド %-.118s は ユーザー '%s'@'%s' ,テーブル '%-.192s' に対して許可されていません" + kor "'%-.118s' 명령은 다음 사용자에게 거부되었습니다. : '%s'@'%s' for 테이블 '%-.192s'" + por "Comando '%-.118s' negado para o usuário '%s'@'%s' na tabela '%-.192s'" + rum "Comanda %-.118s interzisa utilizatorului: '%s'@'%s' pentru tabela '%-.192s'" + rus "Команда %-.118s запрещена пользователю '%s'@'%s' для таблицы '%-.192s'" + serbian "%-.118s komanda zabranjena za korisnika '%s'@'%s' za tabelu '%-.192s'" + spa "%-.118s comando negado para usuario: '%s'@'%s' para tabla '%-.192s'" + swe "%-.118s ej tillåtet för '%s'@'%s' för tabell '%-.192s'" + ukr "%-.118s команда заборонена користувачу: '%s'@'%s' у таблиці '%-.192s'" ER_COLUMNACCESS_DENIED_ERROR 42000 cze "%-.32s příkaz nepřístupný pro uživatele: '%s'@'%s' pro sloupec '%-.192s' v tabulce '%-.192s'" dan "%-.32s-kommandoen er ikke tilladt for brugeren '%s'@'%s' for kolonne '%-.192s' in tabellen '%-.192s'" -- cgit v1.2.1