MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:msvensson Date:February 3 2006 1:49pm
Subject:bk commit into 4.1 tree (msvensson:1.2468) BUG#16297
View as plain text  
Below is the list of changes that have just been committed into a local
4.1 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2468 06/02/03 14:48:56 msvensson@neptunus.(none) +1 -0
  Bug #16297  	In memory grant tables not flushed when users's hostname is ""
   - Protect from using NULL pointer host.hostname 

  sql/sql_acl.cc
    1.172 06/02/03 14:48:53 msvensson@neptunus.(none) +28 -23
    Protect from using NULL pointer host.hostname 
    In 'mysql_show_grants', remove the check if lex_user->host.str is NULL, that will never happen.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/bug16297/my41-bug16297

--- 1.171/sql/sql_acl.cc	2006-01-09 10:31:01 +01:00
+++ 1.172/sql/sql_acl.cc	2006-02-03 14:48:53 +01:00
@@ -222,7 +222,8 @@
                           "case that has been forced to lowercase because "
                           "lower_case_table_names is set. It will not be "
                           "possible to remove this privilege using REVOKE.",
-                          host.host.hostname, host.db);
+                          host.host.hostname ? host.host.hostname : "",
+                          host.db ? host.db: "");
       }
     }
     host.access= get_access(table,2);
@@ -231,8 +232,9 @@
     if (check_no_resolve && hostname_requires_resolving(host.host.hostname))
     {
       sql_print_warning("'host' entry '%s|%s' "
-		      "ignored in --skip-name-resolve mode.",
-		      host.host.hostname, host.db?host.db:"");
+                        "ignored in --skip-name-resolve mode.",
+                        host.host.hostname ? host.host.hostname : "",
+                        host.db ? host.db : "");
       continue;
     }
 #ifndef TO_BE_REMOVED
@@ -302,7 +304,8 @@
     {
       sql_print_warning("'user' entry '%s@%s' "
                         "ignored in --skip-name-resolve mode.",
-		      user.user, user.host.hostname);
+                        user.user ? user.user : "",
+                        user.host.hostname ? user.host.hostname : "");
       continue;
     }
 
@@ -378,8 +381,8 @@
 #endif
       }
       VOID(push_dynamic(&acl_users,(gptr) &user));
-      if (!user.host.hostname || user.host.hostname[0] == wild_many &&
-          !user.host.hostname[1])
+      if (!user.host.hostname ||
+          (user.host.hostname[0] == wild_many && !user.host.hostname[1]))
         allow_all_hosts=1;			// Anyone can connect
     }
   }
@@ -405,7 +408,9 @@
     {
       sql_print_warning("'db' entry '%s %s@%s' "
 		        "ignored in --skip-name-resolve mode.",
-		        db.db, db.user, db.host.hostname);
+		        db.db,
+                        db.user ? db.user : "",
+                        db.host.hostname ? db.host.hostname : "");
       continue;
     }
     db.access=get_access(table,3);
@@ -424,7 +429,9 @@
                           "case that has been forced to lowercase because "
                           "lower_case_table_names is set. It will not be "
                           "possible to remove this privilege using REVOKE.",
-		          db.db, db.user, db.host.hostname, db.host.hostname);
+		          db.db,
+                          db.user ? db.user : "",
+                          db.host.hostname ?  db.host.hostname : "");
       }
     }
     db.sort=get_sort(3,db.host.hostname,db.db,db.user);
@@ -957,8 +964,8 @@
   set_user_salt(&acl_user, password, password_len);
 
   VOID(push_dynamic(&acl_users,(gptr) &acl_user));
-  if (!acl_user.host.hostname || acl_user.host.hostname[0] == wild_many
-      && !acl_user.host.hostname[1])
+  if (!acl_user.host.hostname ||
+      (acl_user.host.hostname[0] == wild_many && !acl_user.host.hostname[1]))
     allow_all_hosts=1;		// Anyone can connect /* purecov: tested */
   qsort((gptr) dynamic_element(&acl_users,0,ACL_USER*),acl_users.elements,
 	sizeof(ACL_USER),(qsort_cmp) acl_compare);
@@ -2761,8 +2768,10 @@
       {
         sql_print_warning("'tables_priv' entry '%s %s@%s' "
                           "ignored in --skip-name-resolve mode.",
-                          mem_check->tname, mem_check->user,
-                          mem_check->host);
+                          mem_check->tname,
+                          mem_check->user ? mem_check->user : "",
+                          mem_check->host.hostname ?
+                          mem_check->host.hostname : "" );
 	continue;
       }
     }
@@ -3187,11 +3196,6 @@
     DBUG_RETURN(-1);
   }
 
-  if (!lex_user->host.str)
-  {
-    lex_user->host.str= (char*) "%";
-    lex_user->host.length=1;
-  }
   if (lex_user->host.length > HOSTNAME_LENGTH ||
       lex_user->user.length > USERNAME_LENGTH)
   {
@@ -3394,16 +3398,17 @@
   /* Add table & column access */
   for (index=0 ; index < column_priv_hash.records ; index++)
   {
-    const char *user;
+    const char *user, *host;
     GRANT_TABLE *grant_table= (GRANT_TABLE*) hash_element(&column_priv_hash,
 							  index);
 
     if (!(user=grant_table->user))
       user= "";
+    if (!(host=grant_table->host.hostname))
+      host= "";
 
     if (!strcmp(lex_user->user.str,user) &&
-	!my_strcasecmp(system_charset_info, lex_user->host.str,
-                       grant_table->host.hostname))
+	!my_strcasecmp(system_charset_info, lex_user->host.str, host))
     {
       ulong table_access= grant_table->privs;
       if ((table_access | grant_table->cols) != 0)
@@ -3779,13 +3784,13 @@
       for (counter= 0, revoked= 0 ; counter < acl_dbs.elements ; )
       {
 	const char *user,*host;
-	
+
 	acl_db=dynamic_element(&acl_dbs,counter,ACL_DB*);
 	if (!(user=acl_db->user))
 	  user= "";
 	if (!(host=acl_db->host.hostname))
 	  host= "";
-	
+
 	if (!strcmp(lex_user->user.str,user) &&
 	    !my_strcasecmp(system_charset_info, lex_user->host.str, host))
 	{
@@ -3816,7 +3821,7 @@
 	  user= "";
 	if (!(host=grant_table->host.hostname))
 	  host= "";
-	
+
 	if (!strcmp(lex_user->user.str,user) &&
 	    !my_strcasecmp(system_charset_info, lex_user->host.str, host))
 	{
Thread
bk commit into 4.1 tree (msvensson:1.2468) BUG#16297msvensson3 Feb