From ddcb947ff73d89233093fb696212a8f788c952df Mon Sep 17 00:00:00 2001
From: unknown <jimw@mysql.com>
Date: Mon, 14 Feb 2005 20:33:14 -0800
Subject: [PATCH] Allow hostnames that are IP addresses with a netmask even
 when running with --skip-name-resolve. (Bug #8471)

sql/sql_acl.cc:
  Add '/' to list of characters that doesn't trigger a need for resolving the
  hostname, so that the IP mask syntax works with skip-name-resolve.
---
 mysql-test/r/skip_name_resolve.result     | 7 +++++++
 mysql-test/t/skip_name_resolve-master.opt | 1 +
 mysql-test/t/skip_name_resolve.test       | 5 +++++
 sql/sql_acl.cc                            | 2 +-
 4 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 mysql-test/r/skip_name_resolve.result
 create mode 100644 mysql-test/t/skip_name_resolve-master.opt
 create mode 100644 mysql-test/t/skip_name_resolve.test

diff --git a/mysql-test/r/skip_name_resolve.result b/mysql-test/r/skip_name_resolve.result
new file mode 100644
index 00000000000..d8d873699a5
--- /dev/null
+++ b/mysql-test/r/skip_name_resolve.result
@@ -0,0 +1,7 @@
+GRANT ALL ON test.* TO mysqltest_1@'127.0.0.1/255.255.255.255';
+SHOW GRANTS FOR mysqltest_1@'127.0.0.1/255.255.255.255';
+Grants for mysqltest_1@127.0.0.1/255.255.255.255
+GRANT USAGE ON *.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
+GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
+REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
+DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
diff --git a/mysql-test/t/skip_name_resolve-master.opt b/mysql-test/t/skip_name_resolve-master.opt
new file mode 100644
index 00000000000..ab6ca1731f5
--- /dev/null
+++ b/mysql-test/t/skip_name_resolve-master.opt
@@ -0,0 +1 @@
+--skip-name-resolve
diff --git a/mysql-test/t/skip_name_resolve.test b/mysql-test/t/skip_name_resolve.test
new file mode 100644
index 00000000000..68dcf329427
--- /dev/null
+++ b/mysql-test/t/skip_name_resolve.test
@@ -0,0 +1,5 @@
+# Bug #8471: IP address with mask fail when skip-name-resolve is on
+GRANT ALL ON test.* TO mysqltest_1@'127.0.0.1/255.255.255.255';
+SHOW GRANTS FOR mysqltest_1@'127.0.0.1/255.255.255.255';
+REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
+DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 7c17a4ef275..f437a432921 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -1339,7 +1339,7 @@ bool hostname_requires_resolving(const char *hostname)
     return FALSE;
   for (; (cur=*hostname); hostname++)
   {
-    if ((cur != '%') && (cur != '_') && (cur != '.') &&
+    if ((cur != '%') && (cur != '_') && (cur != '.') && (cur != '/') &&
 	((cur < '0') || (cur > '9')))
       return TRUE;
   }
-- 
2.30.9